Laravel 5.4 - 在路线

时间:2017-05-26 21:05:49

标签: php laravel-5 laravel-5.4

我还没有能够在路线之外使用控制器。

我希望能够在我的users表中访问一行中的列。我想获取用户ID并将其分配给变量。但我不想使用路线,因为这不是一个页面;它是我的主布局文件。

我有一个名为" admin"的列。如果这等于1,我想在菜单栏中使用@if来显示管理控制面板的链接。但要获取管理列,我需要能够访问用户表。

我尝试过使用jQuery在页面加载时将用户ID分配给变量:

$(window).load(function(){ 

    get('userController@index');

    $userID = {{ $user->id }};
    console.log($userID);

})

我也试过

$(window).load(function(){ 

    Route::get('userController@index');

    $userID = {{ $user->id }};
    console.log($userID);

})

基本上,我不知道如何在没有路线的情况下访问模型或控制器,例如:

Route::get('/home', 'HomeController@index')->name('home');

我得到的Laravel错误是

Undefined variable: user

我知道我没有访问此处的管理列,我知道如何访问用户表后该怎么做。

1 个答案:

答案 0 :(得分:2)

视图无法直接访问控制器。换句话说,视图用于控制器生成html到f2e(客户端浏览器),因此视图必须从控制器获取变量(见下图)。enter image description here

'在路由之外使用Controller',它用于控制器助手,如服务。例如,如果控制器很大,它可以将小功能划分为服务。或者,多个控制器使用相同的常用实用程序,它也可以划分为服务。小功能或相同的通用实用程序仅由没有路由的控制器调用。

对于使用主布局文件的每个控制器,您应该从模型访问admin。例如,如果主视图和用户视图包含主布局文件,则两个视图必须从其控制器获取admin变量...

  • Route :: get('/ home','HomeController @ index');
  • Route :: get('/ user','HomeController @ user');

控制器:

class HomeController extends Controller {
    public function index(){
            return view('home', ['admin' =>User::findOrFail($current_user.id).admin]);
    }
    public function user(){
            return view('user', ['admin' => User::findOrFail($current_user.id).admin]);
    }
}