【发布时间】:2019-11-15 06:01:00
【问题描述】:
Laravel 5.8 新星 2.0
在新星行动中
public function fields()
{
return [];
}
有什么方法可以在此处访问当前选定的行吗?
【问题讨论】:
标签: laravel laravel-nova
Laravel 5.8 新星 2.0
在新星行动中
public function fields()
{
return [];
}
有什么方法可以在此处访问当前选定的行吗?
【问题讨论】:
标签: laravel laravel-nova
不,有两个原因:
1) fields 在资源加载时调用,而不是在显示操作对话框时调用
2)“当前选中”的概念真的只存在于客户端(浏览器)端
您只能在handle PHP 方法中访问选定的行(即提交后,您有$models)。
【讨论】:
有时,当我在详细信息视图中并想要对该记录执行操作时,还想要字段中的当前记录数据(可能是帮助文本),我从 URL 中获取它。
//Get the URL
$explodeUrl = explode('/', strrev($_SERVER['HTTP_REFERER']), 2);
【讨论】:
您可以从 NovaRequest 获取当前模型实例。您可以从传递给方法的 \Illuminate\Http\Request 创建 NovaRequest:
use Laravel\Nova\Http\Requests\NovaRequest;
use Illuminate\Http\Request;
/**
* Get the fields displayed by the resource.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function fields(Request $request)
{
// Model instance or null
$model = NovaRequest::createFrom($request)
->findModelQuery()
->first();
return [
// Your fields here
];
}
【讨论】:
我只在详细信息页面上运行该操作,然后像这样获取单个模型数据:
$model = DB::table('something')->where('id', request()->resourceId)->first();
【讨论】:
Model::find(request()->resourceId) 。现在还没有 Nova,所以无法确认。