首页 文章

Laravel Nova - 如何确定资源计算字段的视图(索引,详细信息,表单)?

提问于
浏览
2

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

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

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

2 回答

  • 0

    您可以为索引和详细信息页面创建两个单独的字段 .

    // ----- 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(),
    
  • 0

    您可以检查请求的类:

    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);
    });
    

相关问题