Laravel 5 将值从一个控制器传递到另一个控制器
这么多年了,找不到解决办法。我已经搜索过了,但没有一篇帖子对我有帮助,可能是因为我对拉拉维尔(5.4)还不熟悉,所以没有得到 我希望能够从一个控制器访问另一个控制器。此外,Laravel 5 将值从一个控制器传递到另一个控制器,laravel-5,Laravel 5,这么多年了,找不到解决办法。我已经搜索过了,但没有一篇帖子对我有帮助,可能是因为我对拉拉维尔(5.4)还不熟悉,所以没有得到 我希望能够从一个控制器访问另一个控制器。此外,$site\u设置需要可在所有控制器和视图上访问。我还需要从URL获取变量(因此在\uu构造(Request$Request)中Request),但它也不起作用 非常感谢您的帮助 谢谢 见下面的代码: //BaseController class BaseController extends Controller {
$site\u设置
需要可在所有控制器和视图上访问。我还需要从URL获取变量(因此在\uu构造(Request$Request)
中Request
),但它也不起作用
非常感谢您的帮助
谢谢
见下面的代码:
//BaseController
class BaseController extends Controller {
public function __construct( Request $request )
{
$slug = $request->slug;
$site_settings = \DB::table('sites_settings')->where('slug', $slug)->first();
View::share( 'site_settings', ['slug' => $slug, 'color' => $color] );
}
}
class SettingsController extends BaseController
{
// SettingsController
public function index( )
{
//how do I access $site_settings here and pass it on to the view?
// return view('settings.index');
}
}
----使用会话更新----
}如果您要在url中传递变量,可以通过get访问该变量并进一步传递。谢谢@GauravRai,我会尝试的。关于将结果从BaseController传递给SettingsController的另一个问题,您能帮忙吗?@devofash如果您的
SettingsController
扩展了BaseController
类,那么它可以访问BaseController
的所有公共和受保护属性。您是否尝试过使用$site\u settings=\DB::table(…
在BaseController::\u构造(…)
方法中使用$this->site\u settings=\DB::table(…
而不是$this->site\u settings=\DB::table(…
),然后通过设置控制器::索引(…)中的$this->site\u settings>调用来接收站点设置值
method。如果站点设置不经常更改,则将其存储在会话中,否则您将对每个页面请求进行额外查询。只要在用户更改设置时更新会话即可。@Joe,谢谢。因此我完成了以下操作,但最初是dd(会话::get('slug'))总是空的,即使我正在设置它,为什么??
//BaseController
class BaseController extends Controller {
public function __construct()
{
$slug = Route::input('slug');
if(Session::get('slug') == $slug)
{
dd(Session::get('slug'));
}
else
{
$site_settings = \DB::table('sites_settings')->where('slug', $slug)->first();
Session::put('slug', $site_settings->slug);
}
}