Laravel Nova动作-在Fields()上获取当前模型实例

时间:2019-07-04 13:19:41

标签: laravel laravel-nova

Laravel 5.8 新星2.0

在新星行动中

public function fields()
{
    return [];
}

这里有什么方法可以访问当前选定的行?

4 个答案:

答案 0 :(得分:1)

您可以从 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
   ];
}

答案 1 :(得分:1)

我只在详细信息页面上运行该操作,然后像这样获取单个模型数据:

$model = DB::table('something')->where('id', request()->resourceId)->first();

答案 2 :(得分:0)

不,有两个原因:

1)fields在资源加载时调用,而不是在显示操作对话框时调用

2)“当前选择”的概念实际上仅存在于客户端(浏览器)方面

您只能通过handle PHP方法访问选定的行(即,提交后,您拥有$models)。

答案 3 :(得分:0)

有时候,当我在详细信息视图中并且想要对该记录执行操作时,又想要字段中的当前记录数据(可能是帮助文本)时,我会从URL中获取它。

//Get the URL
    $explodeUrl = explode('/', strrev($_SERVER['HTTP_REFERER']), 2);