Witam.
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(),
'main_id' => new sfWidgetFormPropelChoice
(array('model' => 'Category', 'add_empty' => true)), 'name' => new sfWidgetFormInput(),
));
$this->setValidators(array( 'id' => new sfValidatorPropelChoice
(array('model' => 'Category', 'column' => 'id', 'required' => false)), 'main_id' => new sfValidatorPropelChoice
(array('model' => 'Category', 'column' => 'id', 'required' => false)), 'name' => new sfValidatorString
(array('min_length' => 3, 'max_length' => 255
), array( '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]');
$this->widgetSchema->setLabels(array( 'name' => 'Nazwa',
'main_id' => 'Główna kategoria'
));
$this->errorSchema = new sfValidatorErrorSchema($this->validatorSchema);
}
?>
Z góry dziękuję za pomoc.
Ten post edytował z3L 18.02.2009, 20:47:25
...