Předání parametru z anotace pro kdyby/aop
- aliamjid
- Člen | 8
Ahoj, potřeboval bych předat parametr do Aop\Around metody pomocí anotace, jestli to nějak lze.
/**
* @Aop\Before("methodAnnotatedWith(app\Model\Anotations\Resource)")
*/
public function resource(Aop\JoinPoint\AroundMethod $aroundMethod) {
// Chci ziskat resource & privilage z anotace
if (!$this->user->isAllowed($resource, $privilage)) {
throw new ....
}
}
Chtěl bych vytvořit anotaci na styl
// 'post' bych rád dostal v $resource nahoře
/** @Resource("post") */
protected function someMethod() {
}
Resource anotace
namespace app\Model\Anotations;
/**
* @Annotation
* @Resource
*/
class Resource {
/** @Required */
public $resource;
public $privilage;
public function __construct($resource = 'test',$privilage = 'show') {
$this->resource = $resource;
$this->privilage = $privilage;
}
}
Editoval aliamjid (20. 7. 2019 13:42)
- aliamjid
- Člen | 8
Tak už jsem nějak přišel na řešení
/**
* @Aop\Before("methodAnnotatedWith(ACL\Resource)")
*/
public function resource(Aop\JoinPoint\BeforeMethod $beforeMethod) {
/** @var Presenter $presenter */
$presenter = $beforeMethod->getTargetObject();
/** @var Resource $resource */
$resource = $this->annotationReader->getMethodAnnotation($beforeMethod->getTargetReflection(),'ACL\Resource');
if(!$this->user->isAllowed($resource->resource,$resource->privilage)) {
$presenter->flashMessage('You cant access here!','danger');
$presenter->redirect($resource->redirect);
}
}
Editoval aliamjid (20. 7. 2019 16:53)