Здравствуйте, уважаемые! Больно о таком писать, но не могу разобраться с простейшей формой.
В общем делаю всё по гайду http://yiiframework.domain-na.me/doc/gu ... tart-forms единственное отличие это нужно сделать форму не yii\widgets\ActiveForm , а с помощью yii\helpers\Html.
Сама форма:
<?= Html::beginForm(['site/entry'], 'post') ?>
<!-- тип, название поля ввода, установленное в поле значение, атрибуты поля ввода -->
<?= Html::input('text', 'name', Yii::$app->request->post('name') ?>
<?= Html::input('text', 'name', Yii::$app->request->post('name') ?>
<?= Html::submitButton('Отправить', ['class' => 'submit']) ?>
<?= Html::endForm() ?>
Контроллер:
public function actionEntry()
{
$molel = new EntryForm();
if ($model->load(Yii::$app->request->post()) && $model->validate()){
// Данные в $model удачно проверены
// делаем что-то полезное с $model
return $this->render('entry-confirm', ['model' => $model]);
} else {
//либо страница отображается первый раз, либо есть ошибка в данных
return $this->render('entry', ['model' => $model]);
}
}
В итоге: фатал еррор:
Call to a member function load() on null+
Собственно вопрос:
Как прикрутить такую форму к контроллеру, что бы всё работало? Гайды, оффдокументацию читаю уже второй день, ещё больше запутался.
Первое знакомство. Работа с формами
-
- Сообщения: 32
- Зарегистрирован: 2016.01.24, 23:49
- TranceSmile
- Сообщения: 562
- Зарегистрирован: 2011.06.27, 19:04
- Откуда: Украина
- Контактная информация:
Re: Первое знакомство. Работа с формами
А чем Вас не устраивает ActiveForm?!
Код: Выделить всё
echo Html::activeInput($model, 'name');
-
- Сообщения: 32
- Зарегистрирован: 2016.01.24, 23:49
Re: Первое знакомство. Работа с формами
Спасибо за вопрос).В том и дело, что не устраивает. Хочу подключить свою вёрстку формы к фреймворку и столкнулся с нежелательными трудностями, а именно ActiveForm генерирует много кода, вот пример одного поля:
<form id="w0" action="/index.php?r=site%2Fentry" method="post">
<input type="hidden" name="_csrf" value="R2gwWnozbmcJAVgzPlQ8Jhc8CWw0fS8zNhp2Yh1aKD0pRUAZS1giFA==">
<div class="form-group field-entryform-name required">
<label class="control-label" for="entryform-name">Name</label>
<input type="text" id="entryform-name" class="form-control" name="EntryForm[name]">
<div class="help-block"></div>
Понимаете в чём проблема? В лишних divах, classах и прочем. Я знаю на это есть стандартный ответ- мол это так надо, полезно, нужно разобраться и будет счастье, но мне полезно это обычная форма. Если можно даже без хелперов, простой html код научиться подключать и я буду всем Вам очень благодарен.
<form id="w0" action="/index.php?r=site%2Fentry" method="post">
<input type="hidden" name="_csrf" value="R2gwWnozbmcJAVgzPlQ8Jhc8CWw0fS8zNhp2Yh1aKD0pRUAZS1giFA==">
<div class="form-group field-entryform-name required">
<label class="control-label" for="entryform-name">Name</label>
<input type="text" id="entryform-name" class="form-control" name="EntryForm[name]">
<div class="help-block"></div>
Понимаете в чём проблема? В лишних divах, classах и прочем. Я знаю на это есть стандартный ответ- мол это так надо, полезно, нужно разобраться и будет счастье, но мне полезно это обычная форма. Если можно даже без хелперов, простой html код научиться подключать и я буду всем Вам очень благодарен.
Re: Первое знакомство. Работа с формами
Ну эти дивы и классы необходимы для фреймворка http://getbootstrap.com/css/#forms
Вам предложили использовать конструкцию Html::activeInput($type, $model, $attribute, $options = []) как раз она рендерит поля без класов bootstrap.
Вам предложили использовать конструкцию Html::activeInput($type, $model, $attribute, $options = []) как раз она рендерит поля без класов bootstrap.
-
- Сообщения: 32
- Зарегистрирован: 2016.01.24, 23:49
Re: Первое знакомство. Работа с формами
Да, постараюсь объяснить чего я хочу на самом деле. Послушал умного человека и взял один лишь чистый фреймворк yii2, положил в папку vendor, потом в yiisoft ... Подключил это в простом indexном файле(в котором планирую ещё и конфиг сделать) добавил пару папок и получилось у меня супер-приложение о котором я давно мечтал. Конечно есть ещё зависимости, которые тянуться, но до них я ещё доберусь. На данном этапе проблема возникла именно с подключением формы, так как bootstrapa у меня нету и в помине все эти классы, дивы мне только мешают подключить свою вёрстку и я хочу от них избавиться каким либо образом.
Возможно возникнет вопрос нафига это мне? Для изучения, чем меньше компонентов тем проще разобраться. Composer не предлагать))
Возможно возникнет вопрос нафига это мне? Для изучения, чем меньше компонентов тем проще разобраться. Composer не предлагать))
Re: Первое знакомство. Работа с формами
Код: Выделить всё
$molel = new EntryForm();
, ну и выше сказали, что чтобы ->load() знал откуда грузить нужно эл-ты формы в свое пространство имени запихнуть, т.е. обычно имена эл-тов типа Model[email], хотя load можно и настроить 2-ым параметром да или вообще не использовать. (active эл-ты как раз и созданы чтобы все это разрулить, используйте)
Yii2 universal module sceleton - for basic and advanced templates
-
- Сообщения: 32
- Зарегистрирован: 2016.01.24, 23:49
Re: Первое знакомство. Работа с формами
Да, действительно, с использованием active элементов проблема решается более чем элегантно. Спасибо. Вопросов нет.