php - Laravel 将某个参数传递给所有视图中的所有路由
问题描述
我需要将一个子域名传递给所有视图,这样当它们与route('namedRoute')
用户生成路由时,它们最终将位于同一个子域中。
我最终创建了一个ViewServiceProvider
注册视图作曲家,我从请求中获取子域,如下所示:
use Illuminate\Support\Facades\View as FView;
use Illuminate\View\View;
class ViewServiceProvider extends ServiceProvider {
FView::composer('*', function(View $view){
$view->with('subdomain', request()->route()->subdomain);
});
}
这样,由于Laravel 文档'*'
中记录的内容,每次都会将子域变量传递给每个单一视图。
然后当我需要在任何视图中生成任何路由时,我总是必须像这样传递子域,并且路由将正确生成。
{{ route('signInPage', ['subdomain' => $subdomain]) }}
那么 laravel 中是否有一些东西(比如 a post view processing
)我可以挂钩来自动填充子域,所以我现在不必修改每个视图中的每个路由生成?
解决方案
URL 生成器可以采用默认值,因此您在生成 URL 时不必为路由传递参数:
URL::defaults(['subdomain' => ....]);
您可以创建一个subdomain
从请求中获取参数并设置此默认值的路由中间件。
推荐阅读
- android - java.lang.IllegalArgumentException:索引 2 处的绑定值为空?
- laravel - 中断循环并捕获剩余项目计数
- tensorflow - 如何保存我自己训练的词嵌入模型(使用 Keras),如 word2vec 和 Glove
- asp.net - 无法解析类型“Microsoft.AspNetCore.Identity.SignInManager”的服务
- python - 如何使用列表打印文本并将更多列表组件组合到字符串?
- powershell - 使用当前用户 AD 组成员映射网络驱动器
- java - 有没有办法模拟 Socket 和 Connection 超时?
- python - 谷歌应用引擎中的 Flask-Compress 模块未压缩响应正文
- html - 为什么`display:none`不加载背景图片?
- r - 如何编写一个函数来对多个数据集应用分析并将结果合并到一个数据框中?