首页 > 解决方案 > Laravel Nova - 如何确定资源计算字段的视图(索引、详细信息、表单)?

问题描述

在查看索引视图时,我想为计算字段返回不同的结果,而不是查看资源的详细视图时。

基本上类似于下面的 viewIs() :

Text::make('Preview', function () {
    if($this->viewIs('index'){
        return \small_preview($this->image);
    }
    return \large_preview($this->image);
 })->asHtml(),

标签: laravel-novacomputed-field

解决方案


您可以检查请求的类:

Text::make('Preview', function () use ($request) {
    if ($request instanceof \Laravel\Nova\Http\Requests\ResourceDetailRequest) {
        return \large_preview($this->image);
    }

    return \small_preview($this->image);
});

否则,您可以创建自己的 viewIs 函数:

// app/Nova/Resource.php

/**
 * Check the current view.
 *
 * @param  string  $view
 * @param  \Laravel\Nova\Http\Requests\NovaRequest  $request
 * @retrun bool
 */
public function viewIs($view, $request)
{
    $class = '\Laravel\Nova\Http\Requests\\Resource'.ucfirst($view).'Request';

    return $request instanceof $class;
}

然后你可以这样做:

Text::make('Preview', function () use ($request) {
    if ($this->viewIs('detail', $request) {
        return \large_preview($this->image);
    }

    return \small_preview($this->image);
});

推荐阅读