2016-10-23 6 views
0

Я хочу, чтобы одна общая переменная $users = User::all();, чтобы я мог использовать его в различных методах внутри контроллера, и он не работает таким образом:Laravel - Public переменная в контроллере

<?php 

namespace App\Http\Controllers; 

use Illuminate\Http\Request; 
use App\Http\Requests; 
use App\User; 

class AdminController extends Controller 
{ 

    public $users = User::all(); 

    public function __construct() { 
     $this->middleware('auth'); 
    } 


    public function index() 
    { 
     return view('admin.index'); 
    } 

    public function showUsers() 
    { 

     return view('admin.users', compact('users')); 
    } 
} 

я получаю эту ошибку: Constant выражение содержит недопустимые операции

enter image description here

Что я делаю неправильно?

ответ

4

Попробуйте добавить задание в __construct() функции вместо:

<?php 

namespace App\Http\Controllers; 

use Illuminate\Http\Request; 
use App\Http\Requests; 
use App\User; 

class AdminController extends Controller 
{ 

    public $users; 

    public function __construct() { 
     $this->users = User::all(); 
     $this->middleware('auth'); 
    } 


    public function index() 
    { 
     return view('admin.index'); 
    } 

    public function showUsers() 
    { 
     $users = $this->users; 
     return view('admin.users', compact('users')); 
    } 
} 
+0

не работает – lewis4u

+0

Какая ошибка вы получаете? –

+0

Неопределенная переменная: пользователи в поле зрения – lewis4u

1

Вы должны инициализировать $users в конструкторе:

<?php 

public $users; 

public function __construct() { 
    $this->middleware('auth'); 
    $this->users = User::all(); 
} 
+0

Awww ... Вы были 44 секунд впереди меня Lol –

+0

Случается все время;) –

+0

Я обвиняю SO-уценку ... Имея пробелы для кодовых блоков:/ –

Смежные вопросы