ublaboo/presenter-component

此包已被废弃,不再维护。未建议替代包。

Nette 框架的注解增强组件工厂

v1.0.1 2016-07-02 15:22 UTC

This package is not auto-updated.

Last update: 2017-04-11 17:39:22 UTC


README

Build Status Latest Stable Version License Total Downloads Gitter

PresenterComponent

厌倦了编写组件工厂?有解决方案!

1,假设,你有一个表单工厂类

namespace App\Forms;

use Nette;

class ProductFormFactory extends Nette\Object
{

	public function create()
	{
		$form = new Nette\Application\UI\Form;

		$form->onSuccess = [$this, 'succeeded'];

		return $form;
	}


	public function succeeded($form, $values)
	{
		# Your onSuccess code
	}

}

那么,而不是

namespace App\Prsenters;

use App;

class HomepagePresenter extends Nette\Application\UI\Presenter;
{

	/**
	 * @var App\Forms\ProductFormFactory
	 * @inject
	 */
	public $productFormFactory;


	public function createComponentProductForm()
	{
		return $this->productFormFactory->create();
	}

}

你可以使用注解创建表单工厂

namespace App\Prsenters;

use App,
	Ublaboo\PresenterComponent\PresenterComponentTrait;

class HomepagePresenter extends Nette\Application\UI\Presenter;
{

	use PresenterComponentTrait;

	/**
	 * @var App\Forms\ProductFormFactory
	 * @inject
	 * @component productForm:create
	 */
	public $productFormFactory;

}

2,向组件工厂类传递变量

namespace App\Prsenters;

use App,
	Ublaboo\PresenterComponent\PresenterComponentTrait;

class HomepagePresenter extends Nette\Application\UI\Presenter;
{

	public $id;

	use PresenterComponentTrait;

	/**
	 * @var App\Forms\ProductFormFactory
	 * @inject
	 * @component productForm:create
	 * @componentArgs id, user
	 */
	public $productFormFactory;

}

3,表单回调(onSuccess,onError,..)

namespace App\Prsenters;

use App,
	Ublaboo\PresenterComponent\PresenterComponentTrait;

class HomepagePresenter extends Nette\Application\UI\Presenter;
{

	public $id;

	use PresenterComponentTrait;

	/**
	 * @var App\Forms\ProductFormFactory
	 * @inject
	 * @component productForm:create
	 * @componentArgs id, user
	 * @componentCallback onSuccess:succeeded
	 * @componentCallback onValidate:validate
	 * @componentCallback onError:formError
	 */
	public $productFormFactory;


	public function succeeded($form, $values)
	{

	}


	public function validate($form, $values)
	{
		
	}


	public function formError($form)
	{
		
	}

}