我将变量传递给了AppServiceProvider boot()中的所有视图 我在此变量中存储了数据库中第一个用户的名称 这样我就可以将其作为标题
放在我的布局中当数据库中没有用户(新数据库)时,发生问题 它通过异常表示$ title未定义,这是事实 它没有定义,所以我试图做出陈述,但是由于某种原因它忽略了它
启动()
public function boot()
{
Schema::defaultStringLength(191);
View::composer('*',function($view){
$title = DB::table('users')->first();
$view->with('title',$title);
});
我尝试以此为逻辑,但没有成功
public function boot()
{
Schema::defaultStringLength(191);
$check = DB::table('users')->first();
if ($check != null) {
View::composer('*',function($view){
$title = DB::table('users')->first();
$view->with('title',$title); });
}else {
return view('nouser');
}
没有语法错误,但我认为问题是网站每次重新加载时都会呈现所有布局(我有3个) 来宾和管理员都有
<title>{{$title->name}}</title>
和标题不是动态的应用程序以及我编码的nouser页面 我扩展了应用布局bcs,它没有这个未定义的变量
问题是我需要向用户隐藏此异常,并将其重定向到显示请注册的页面,然后在注册后将其重定向到主页
答案 0 :(得分:0)
您的代码的主要问题是;如果没有用户,您将尝试在对象中打印某些内容。尝试实现某些东西时,您应该注意 S.O.L.I.D。原则。
$countUsers = DB::table('users')->count();
$title = null;
if($countUsers > 0){
$title = DB::table('users')->first()->name;
}
View::composer('*',function($view){
$view->with('title',$title);
});
if($countUsers == 0 ){
return view('nouser');
}
在您的模板中使用
<title>{{$title}}</title>
代替
<title>{{$title->name}}</title>
使用View::composer
并不是动态更改标题的更好解决方案。
因此,您可以使用artesaos/seotools包获取动态标题,描述,并且更加容易。此外,它还具有动态的twitter和opengraph元生成功能,这对于seo确实很重要。
<?php
....
class ForExampleController extends {
public function viewUser($ID){
$user = User::findOrFail($ID);
SEO::setTitle($user->name);
SEO::setDescription("This is the profile of ".$user->name);
SEO::opengraph()->setUrl(...); // you can set users profile url
// and much more..
}
}
?>
答案 1 :(得分:0)
我通过在由appservice提供程序安装的页面控制器中完成此操作
页面控制器
public function gethome()
{
$title = DB::table('users')->first();
if ($title == null) {
return redirect('/register');
}else{
$cvg = CV::all();
return view('guest.cv')->with('cvg', $cvg);
}
并针对它们是4条主要路线的所有来宾目录执行了
在AppServiceProvider中
public function boot()
{
Schema::defaultStringLength(191);
View::composer('*',function($view){
$title = DB::table('users')->first();
$view->with('title',$title);
});
}
我的客人布局
<title>{{$title->name}}</title>
希望这可以帮助任何遇到相同问题的人祝你好运,并享受有趣的编码