我有一个系统,其中有一个默认页面和4个模型,这些模型可以更改,与模型对应的文件名在数据库中,这就是我的问题开始的时候,因为我不能放置变量确定 return view () 中的文件名,虽然变量位于同一函数内,但我知道问题不是变量,它返回预期值,但 laravel 无法按照我尝试的方式识别它。
Controller
public function searchByName($name)
{
$company = Company::where('name', $name)->firstOrFail();
$personality = DB::table('personalities')->where('name', $name)->first();
$home_cp = DB::table('personalities')->select('index_company')->where('name', $name)->first();
$index_company = view('company.base.$home_cp');
return view('company.base.index', compact('company', 'name', 'personality', 'index_company'));
}
查看
@if(isset($personality))
{{$index_company}}
@else
@include('company.base.default')
@endif;
错误
InvalidArgumentException
View [company.base.$home_cp] not found.
这里的问题是它说找不到页面,因为文件“$home_cp”不存在,即它不将“$home_cp”视为变量,因此它不会返回我在此需要的内容文件名大小写。
请注意,问题出在 Controller 上,而不是预览上。如果您进入预览并没有找到任何内容,它将显示默认文件。
解决这个问题的最佳方法是什么,或者正确的方法是什么(如果有的话)?
最佳答案
使用双引号代替单引号来解析变量
$index_company = view('company.base.$home_cp');
应该是
$index_company = view("company.base.$home_cp");
关于php - 我需要在 Controller 中创建一个函数来显示特定 View ,其文件名由数据库确定。 - 拉拉维尔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58576574/