napeHeK
(Napehek)
March 10, 2010, 3:39pm
1
Форма добавления
$model = new AddFrom;
$form = new CForm('application.views.docs.addForm', $model);
Форма редактирование…вроде должно работать, а не работает.
$model = AddFrom::model()->findbyPk($_GET['id']);
$form = new CForm('application.views.docs.addForm', $model);
Что я упустил?
andy_s
(Arekandrei)
March 10, 2010, 6:46pm
2
Что конкретно не работает, какая ошибка? Если первый аргумент путь, то файл addForm.php должен возвращать массив настроек для формы.
napeHeK
(Napehek)
March 10, 2010, 7:23pm
3
[font="Courier New"]Форма не появляется…точней появляется только submit
Добавление происходит нормально…а вот как сделать редактирование с построителем…
Ну т.е. добавление и редактирование одна и таже форма, только у редактирование выставлены значения из базы…
public function actionAdd()
{
$model = new addFrom;
$form = new CForm('docs.forms.addForm', $model);
//...
public function actionEdit()
{
$model = addFrom::model()->findByPk($_GET['id']);
$form = new CForm('docs.forms.addForm', $model);
//...
[/font]
andy_s
(Arekandrei)
March 10, 2010, 8:07pm
4
Ну вообще-то у меня такое было, когда атрибуты модели не были объявлены как "safe", но тогда странно что первый вариант работает (если они у вас конечно "safe" для любого сценария).
findByPk нормальный результат возвращает?
napeHeK
(Napehek)
March 10, 2010, 8:28pm
5
Да. Объявил safe для всех полей, тоже самое
array('function, description, syntax, inc, module, type, params, example', 'safe'),
Все стандартно…
napeHeK
(Napehek)
March 10, 2010, 8:37pm
6
Все правила
public function rules()
{
return array(
array('function, description, syntax, inc, module, type, params', 'required'),
array('function, description, syntax, inc, module, type, params, example', 'safe'),
array('type', 'in', 'range' => array('Native', 'Public', 'Forward', 'Stock ')),
);
}
andy_s
(Arekandrei)
March 11, 2010, 8:00am
7
Странно, подобный код у меня работает и при создании, и при редактировании… либо я чего-то не вижу, либо ошибка вркалась с другой стороны. Попробуйте создать всё с нуля или поэкспериментировать с другой моделью…
napeHeK
(Napehek)
March 11, 2010, 8:26am
8
Создал другую базу, тоже самое…добавляется нормально, редактироваться не хочет.
<?php
class TestModel extends CActiveRecord
{
public $text;
public static function model($className=__CLASS__)
{
return parent::model($className);
}
public function tableName()
{
return 'test';
}
public function rules()
{
return array(
array('text', 'required'),
array('text', 'safe'),
);
}
}
class TestController extends Controller
{
public function actionIndex()
{
$model = new TestModel;
$form = new CForm('webroot.form', $model);
if(isset($_POST['TestModel']))
{
$model->attributes = $_POST['TestModel'];
if($model->save())
$this->redirect(Yii::app()->createAbsoluteUrl('test/index'));
}
else
echo $form;
}
public function actionEdit()
{
$model = TestModel::model()->findByPk($_GET['id']);
$form = new CForm($form, $model);
if(isset($_POST['TestModel']))
{
if($model->save())
$this->redirect(Yii::app()->createAbsoluteUrl('test/index'));
}
else
echo $form;
}
}
<?php
return array(
'elements'=>array(
'text'=>array(
'type'=>'textarea',
'cols'=>60,
'rows' => 4,
),
),
'buttons' => array(
'add' => array(
'type' => 'submit',
'value' => 'Сохранить',
),
),
);
print_r($model);
TestModel Object
(
[text] => My Record
....
andy_s
(Arekandrei)
March 11, 2010, 9:32am
9
Вот такой код у меня работает без проблем:
$model = TestModel::model()->findByPk($_GET['id']);
$form = new CForm('webroot.form', $model);
if($form->submitted('add') && $form->validate())
{
if ($model->save(false))
$this->refresh();
}