denys281

Untitled

Nov 8th, 2011
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 5.62 KB | None | 0 0
  1. <?php
  2.  
  3. /**
  4.  * Category form.
  5.  *
  6.  * @package    bconcept
  7.  * @subpackage form
  8.  * @author     John Doe
  9.  * @version    SVN: $Id: sfDoctrineFormTemplate.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
  10.  */
  11. class CategoryForm extends BaseCategoryForm
  12. {
  13.    
  14.  
  15.   public function configure()
  16.         {
  17.      
  18.      
  19.        unset($this['created_at'], $this['updated_at'],$this['product_list'],$this['slug']);
  20.      
  21.    
  22.        // Russian label
  23.       $this->widgetSchema->setLabel('ru', 'На русском');
  24.          
  25.             $this->widgetSchema['ru']['name']->setLabel('Название');    
  26.         // Turkey label
  27.            
  28.         $this->widgetSchema->setLabel('tr', 'Dili Türkçe');      
  29.          
  30.             $this->widgetSchema['tr']['name']->setLabel('Başlık');
  31.            
  32.              // Тут все супроводжується коментарями оригінального автора.
  33.            
  34.            
  35.           // ЦЯ частина відповідає за вивід уже наявних підкатегорій.
  36.           //
  37.                 // embed all subcategory forms
  38.                     foreach ($this->getObject()->getSubcategory() as $subcategory) {
  39.  
  40.                             // create a new subcategory form for the current subcategory model object
  41.                           $subcategory_form = new SubcategoryForm($subcategory);
  42.  
  43.                             // embed the subcategory form in the main category form
  44.                             $this->embedForm('subcategory'.$subcategory->getId(), $subcategory_form);
  45.  
  46.                              // set a custom label for the embedded form
  47.                             $this->widgetSchema['subcategory'.$subcategory->getId()]->setLabel('Подкатегория: '.$subcategory->getName());
  48.    
  49.                          
  50.                        // change the name widget to sfWidgetFormInputDelete
  51.                        
  52.                             // Віджет для видалення вкладеної форми, не дуже красивий.
  53.                             //Також обовязково потрібно прописати роут для нього і екшен:
  54.                            
  55.                             /*
  56.                              subcatdelete:
  57.                               url:   /subcatdelete
  58.                               param: { module: category, action: deletes }
  59.                        
  60.                          public function executeDeletes(sfWebRequest $request) {
  61.  
  62.                         $sub_category = Doctrine::getTable('Subcategory')->find($request->getParameter('id'));
  63.                         $sub_category->delete();
  64.                         $this->redirect('@category_edit?id='.$sub_category->getCategory()->getId());
  65.                         }
  66.                              *
  67.                              *
  68.                              */
  69.                            
  70.                 $this->widgetSchema['subcategory'.$subcategory->getId()]['id'] = new sfWidgetFormInputDelete(array(
  71.                                 'url' => 'subcatdelete',      // required
  72.                                 'model_id' => $subcategory->getId(),        // required
  73.                                 'confirm' => 'Вы уверены?',                     // optional
  74.                     ));
  75.  
  76.                              }    
  77.  
  78.                              // ЦЯ частина відповідає за вивід форми для створення нової підкатегорії.
  79.                            
  80.                 // create a new subcategory form for a new subcategory model object
  81.                  $subcategory_form = new SubcategoryForm();
  82.  
  83.                 // embed the subcategory form in the main category form
  84.                 $this->embedForm('subcategory', $subcategory_form);
  85.                  // set a custom label for the embedded form
  86.                 $this->widgetSchema['subcategory']->setLabel('Новая подкатегория');
  87.  
  88.                       //  }    
  89.                    
  90.                      
  91.   }
  92.  
  93.   public function bind(array $taintedValues = null, array $taintedFiles = null) {
  94.  
  95.      
  96.       // ЦЮ всю  біду робимо із низу заради того, що коли людина створює категорію чи редагує, і не вносить ніяких змін
  97.      // щоб валідатор не видав помилку.І не сабмітилось пусте поле підкатегорії.  
  98.      
  99.      
  100.        $this->languages = sfConfig::get('app_cultures_enabled');
  101.  
  102.             $langs = array_keys($this->languages);
  103.    
  104.        // В даному випадку у мене іде перевірка чи відповідні значення російсьокою мовою пристуні у  формі, якщо не присутні
  105.                 if (is_null($taintedValues['subcategory']['ru']['name']) || strlen($taintedValues['subcategory']['ru']['name']) === 0 ) {
  106.  
  107.                     // то робимо ансет форми
  108.                     unset($this->embeddedForms['subcategory'], $taintedValues['subcategory']);
  109.  
  110.                     // pass the new form validations
  111.                     $this->validatorSchema['subcategory'] = new sfValidatorPass();
  112.  
  113.             } else {
  114.                      // якщо присутні
  115.                      // set the category of the new subcategory form object
  116.                         $this->embeddedForms['subcategory']->getObject()->setCategory($this->getObject());
  117.  
  118.                     }
  119.          
  120.          
  121.     // call parent bind method
  122.     parent::bind($taintedValues, $taintedFiles);
  123.  
  124. }
  125.  
  126.  
  127.  
  128. }
Advertisement
Add Comment
Please, Sign In to add comment