Laravel Nova - Как определить вид (индекс, детализацию, форму), в котором вы находитесь для вычисляемого поля ресурса? - PullRequest
0 голосов
/ 10 декабря 2018

Я хотел бы вернуть другой результат для вычисляемого поля при просмотре представления индекса, чем при просмотре подробного представления ресурса.

По сути, что-то вроде viewIs () ниже:

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

Ответы [ 3 ]

0 голосов
/ 10 декабря 2018

Вы можете проверить класс запроса:

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);
});
0 голосов
/ 20 января 2019

К сожалению, ответ @ Чина у меня не сработал, так как для представления «Правка» класс запросов является просто базовым Laravel\Nova\Http\Request классом.

Мой обходной путь, чтобы проверить, является ли это представлением индекса, выглядит следующим образом:

/**
 * Check if the current view is an index view.
 *
 * @param  \Laravel\Nova\Http\Requests\NovaRequest $request
 * @return bool
 */
public function isIndex($request)
{
    return $request->resourceId === null;
}
0 голосов
/ 10 декабря 2018

Вы можете создать два отдельных поля для страницы индекса и сведений.

// ----- For Index page
Text::make('Preview', function () {
    return \small_preview($this->image);
})
->onlyOnIndex()
->asHtml(),

// ----- For Detail page
Text::make('Preview', function () {
    return \large_preview($this->image);
})
->onlyOnDetail()
->asHtml(),
...