Laravel Nova - How to determine the view (index, detail, form) you are in for a resource's computed field?

后端 未结 5 759
野的像风
野的像风 2021-01-19 07:21

I would like to return a different result for a computed field when viewing the index view than when viewing the detail view of a resource.

Basically something like

5条回答
  •  刺人心
    刺人心 (楼主)
    2021-01-19 08:15

    The NovaRequest class will soon be able to help, as the isResourceIndexRequest and isResourceDetailRequest are already in master.

    As the Nova repo is private I will keep you posted, when it will be usable.

    In the meantime I am falling back to helper methods on the Nova Resource class (app/Nova/Resource.php):

    namespace App\Nova;
    
    use Laravel\Nova\Http\Requests\ResourceDetailRequest;
    use Laravel\Nova\Http\Requests\ResourceIndexRequest;
    use Laravel\Nova\Resource as NovaResource;
    use Laravel\Nova\Http\Requests\NovaRequest;
    
    abstract class Resource extends NovaResource
    {
        // [...]
    
        /**
         * Determine if this request is a resource index request.
         *
         * @return bool
         */
        public function isResourceIndexRequest($request)
        {
            return $request instanceof ResourceIndexRequest;
        }
    
        /**
         * Determine if this request is a resource detail request.
         *
         * @return bool
         */
        public function isResourceDetailRequest($request)
        {
            return $request instanceof ResourceDetailRequest;
        }
    }
    

    Usage:

    public function fields(Request $request)
    {
        $fields = [
            // [...]
        ];
    
        if ($this->isResourceDetailRequest($request)) {
            if ($this->isResourceDetailRequest($request)) {
                $fields = array_merge($fields, [
                    // [...]
                ]);
            }
        }
    
        return $fields;
    }
    

提交回复
热议问题