Otóż chciałbym napisać backend po swojemu, nie lubię wygenerowanego. I tutaj moje błędy:
1. Gdy chcę zedytować kategorię, to wyrzuca mi : (problem jest, tylko w przypadku kliknięcia w submit)
<?php Fatal error: Call to undefined method sfRoute::getObject() ?>
Mój kod:
<?php public function executeEdit(sfWebRequest $request) { $this->category = $this->getRoute()->getObject(); $this->form = new CategoryForm($this->category); if ($request->isMethod('post')) { $this->form->bind($request->getParameter('category')); if ($this->form->isValid()) { $this->form->save(); } } } ?>
<?php category_edit: url: /category/edit/:slug class: sfPropelRoute param: { module: category, action: edit } options: { model: Category, type: object } ?>
2. Podczas edytowania kategorii , jest pole select z main_id. Chodzi mi tutaj o subkategorie w tym przypadku. Lecz, gdy przekazuję
<?php $this->category = $this->getRoute()->getObject(); $this->form = new CategoryForm($this->category); ?>
To w selectcie wyświetla mi również aktualnie edytowaną kategorię, mój form:
<?php public function configure() { 'id' => new sfWidgetFormInputHidden(), 'name' => new sfWidgetFormInput(), )); 'id' => new sfValidatorPropelChoice(array('model' => 'Category', 'column' => 'id', 'required' => false)), 'main_id' => new sfValidatorPropelChoice(array('model' => 'Category', 'column' => 'id', 'required' => false)), 'min_length' => 'Nazwa "%value%" jest zbyt krótka. Wymagane jest minimum %min_length% znaków.', 'required' => 'Nazwa jest wymagana.', 'max_length' => 'Nazwa jest zbyt długa. Wymagane jest maksimum %max_length% znaków.' )), )); $this->widgetSchema->setNameFormat('category[%s]'); 'name' => 'Nazwa', 'main_id' => 'Główna kategoria' )); $this->errorSchema = new sfValidatorErrorSchema($this->validatorSchema); } ?>
Z góry dziękuję za pomoc.