%PDF- %PDF-
Direktori : /home/forge/api-takeaseat.eco-n-tech.co.uk/vendor/laravel/nova/src/Fields/ |
Current File : //home/forge/api-takeaseat.eco-n-tech.co.uk/vendor/laravel/nova/src/Fields/HasMany.php |
<?php namespace Laravel\Nova\Fields; use Illuminate\Http\Request; use Laravel\Nova\Contracts\ListableField; use Laravel\Nova\Contracts\RelatableField; class HasMany extends Field implements ListableField, RelatableField { /** * The field's component. * * @var string */ public $component = 'has-many-field'; /** * The class name of the related resource. * * @var string */ public $resourceClass; /** * The URI key of the related resource. * * @var string */ public $resourceName; /** * The name of the Eloquent "has many" relationship. * * @var string */ public $hasManyRelationship; /** * The displayable singular label of the relation. * * @var string */ public $singularLabel; /** * Create a new field. * * @param string $name * @param string|null $attribute * @param string|null $resource * @return void */ public function __construct($name, $attribute = null, $resource = null) { parent::__construct($name, $attribute); $resource = $resource ?? ResourceRelationshipGuesser::guessResource($name); $this->resourceClass = $resource; $this->resourceName = $resource::uriKey(); $this->hasManyRelationship = $this->attribute; } /** * Determine if the field should be displayed for the given request. * * @param \Illuminate\Http\Request $request * @return bool */ public function authorize(Request $request) { return call_user_func( [$this->resourceClass, 'authorizedToViewAny'], $request ) && parent::authorize($request); } /** * Resolve the field's value. * * @param mixed $resource * @param string|null $attribute * @return void */ public function resolve($resource, $attribute = null) { // } /** * Set the displayable singular label of the resource. * * @return $this */ public function singularLabel($singularLabel) { $this->singularLabel = $singularLabel; return $this; } /** * Prepare the field for JSON serialization. * * @return array */ public function jsonSerialize() { return array_merge([ 'hasManyRelationship' => $this->hasManyRelationship, 'listable' => true, 'perPage'=> $this->resourceClass::$perPageViaRelationship, 'resourceName' => $this->resourceName, 'singularLabel' => $this->singularLabel ?? $this->resourceClass::singularLabel(), ], parent::jsonSerialize()); } }