我还没有能够在路线之外使用控制器。
我希望能够在我的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
我知道我没有访问此处的管理列,我知道如何访问用户表后该怎么做。
答案 0 :(得分:2)
视图无法直接访问控制器。换句话说,视图用于控制器生成html到f2e(客户端浏览器),因此视图必须从控制器获取变量(见下图)。
'在路由之外使用Controller',它用于控制器助手,如服务。例如,如果控制器很大,它可以将小功能划分为服务。或者,多个控制器使用相同的常用实用程序,它也可以划分为服务。小功能或相同的通用实用程序仅由没有路由的控制器调用。
对于使用主布局文件的每个控制器,您应该从模型访问admin。例如,如果主视图和用户视图包含主布局文件,则两个视图必须从其控制器获取admin变量...
控制器:
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]);
}
}