Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- /**
- * Category form.
- *
- * @package bconcept
- * @subpackage form
- * @author John Doe
- * @version SVN: $Id: sfDoctrineFormTemplate.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
- */
- class CategoryForm extends BaseCategoryForm
- {
- public function configure()
- {
- unset($this['created_at'], $this['updated_at'],$this['product_list'],$this['slug']);
- // Russian label
- $this->widgetSchema->setLabel('ru', 'На русском');
- $this->widgetSchema['ru']['name']->setLabel('Название');
- // Turkey label
- $this->widgetSchema->setLabel('tr', 'Dili Türkçe');
- $this->widgetSchema['tr']['name']->setLabel('Başlık');
- // Тут все супроводжується коментарями оригінального автора.
- // ЦЯ частина відповідає за вивід уже наявних підкатегорій.
- //
- // embed all subcategory forms
- foreach ($this->getObject()->getSubcategory() as $subcategory) {
- // create a new subcategory form for the current subcategory model object
- $subcategory_form = new SubcategoryForm($subcategory);
- // embed the subcategory form in the main category form
- $this->embedForm('subcategory'.$subcategory->getId(), $subcategory_form);
- // set a custom label for the embedded form
- $this->widgetSchema['subcategory'.$subcategory->getId()]->setLabel('Подкатегория: '.$subcategory->getName());
- // change the name widget to sfWidgetFormInputDelete
- // Віджет для видалення вкладеної форми, не дуже красивий.
- //Також обовязково потрібно прописати роут для нього і екшен:
- /*
- subcatdelete:
- url: /subcatdelete
- param: { module: category, action: deletes }
- public function executeDeletes(sfWebRequest $request) {
- $sub_category = Doctrine::getTable('Subcategory')->find($request->getParameter('id'));
- $sub_category->delete();
- $this->redirect('@category_edit?id='.$sub_category->getCategory()->getId());
- }
- *
- *
- */
- $this->widgetSchema['subcategory'.$subcategory->getId()]['id'] = new sfWidgetFormInputDelete(array(
- 'url' => 'subcatdelete', // required
- 'model_id' => $subcategory->getId(), // required
- 'confirm' => 'Вы уверены?', // optional
- ));
- }
- // ЦЯ частина відповідає за вивід форми для створення нової підкатегорії.
- // create a new subcategory form for a new subcategory model object
- $subcategory_form = new SubcategoryForm();
- // embed the subcategory form in the main category form
- $this->embedForm('subcategory', $subcategory_form);
- // set a custom label for the embedded form
- $this->widgetSchema['subcategory']->setLabel('Новая подкатегория');
- // }
- }
- public function bind(array $taintedValues = null, array $taintedFiles = null) {
- // ЦЮ всю біду робимо із низу заради того, що коли людина створює категорію чи редагує, і не вносить ніяких змін
- // щоб валідатор не видав помилку.І не сабмітилось пусте поле підкатегорії.
- $this->languages = sfConfig::get('app_cultures_enabled');
- $langs = array_keys($this->languages);
- // В даному випадку у мене іде перевірка чи відповідні значення російсьокою мовою пристуні у формі, якщо не присутні
- if (is_null($taintedValues['subcategory']['ru']['name']) || strlen($taintedValues['subcategory']['ru']['name']) === 0 ) {
- // то робимо ансет форми
- unset($this->embeddedForms['subcategory'], $taintedValues['subcategory']);
- // pass the new form validations
- $this->validatorSchema['subcategory'] = new sfValidatorPass();
- } else {
- // якщо присутні
- // set the category of the new subcategory form object
- $this->embeddedForms['subcategory']->getObject()->setCategory($this->getObject());
- }
- // call parent bind method
- parent::bind($taintedValues, $taintedFiles);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment