Předání parametru z anotace pro kdyby/aop

aliamjid
Člen | 8
+
0
-

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
+
0
-

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)