Validierer Da Sie keine Anweisungen in einer Klasse Eigenschaften ausführen können, können Sie versuchen, die create
Methode Ihrer Repository
Instanz außer Kraft zu setzen, um die $rules
Parameter zu ändern, bevor sie tatsächlich das schaffen stattfinden.
Also in Ihrem Repository
Klasse, überschreiben die Methode create
:
public function create(array $attributes)
{
$oldRule = $this->rules[ValidatorInterface::RULE_CREATE]['author'];
if(Auth::guest()){ // or use the preferred check
unset($this->rules[ValidatorInterface::RULE_CREATE]['author']);
}
$this->makeValidator();
$res = parent::create($attributes);
$this->rules[ValidatorInterface::RULE_CREATE]['author'] = $oldRule;
return $res;
}
EDIT
Eine andere Methode könnte benutzerdefinierte Validierungslogik in Ihrer PostValidator
werden Angabe wie folgt:
use \Prettus\Validator\LaravelValidator;
class PostValidator extends LaravelValidator {
const RULE_CREATE_FOR_MEMBER = 'RULE_CREATE_FOR_MEMBER';
protected $rules = [
ValidatorInterface::RULE_CREATE => [
'title' => 'required',
'text' => 'min:3',
'author'=> 'required'
],
self::RULE_CREATE_FOR_MEMBER => [
'title' => 'required',
'text' => 'min:3'
],
ValidatorInterface::RULE_UPDATE => [
'title' => 'required'
]
];
public function passes($action = null)
{
if($action == ValidatorInterface::RULE_CREATE && \Auth::id()) {
$action = self::RULE_CREATE_FOR_MEMBER;
}
return parent::passes($action);
}
}
Aber wieder müssen Sie das Standardverhalten überschreiben, d Es liegt an Ihnen, zu entscheiden, welche die einfachste Lösung für Ihre Bedürfnisse ist.
Versuchen Sie, meine Frage sorgfältig zu lesen. Ich benutze ein anderes Paket –
Von dem, was ich sehe, müssen Sie noch benutzerdefinierte Logik definieren, das Paket ist nur ein Gebäude-Schnittstelle – Quezler