Здравствуйте, имеется сложная для меня форма, помогите её накрутить на ActiveForm
Вот данная форма HTML:
<form name="appointment_form" id="appointment_form" method="post" action="#" onSubmit="return false">
<span class="input input--kohana">
<input class="input__field input__field--kohana" type="text" id="input-29" name="input-29" />
<label class="input__label input__label--kohana" for="input-29">
<i class="icon-user6 icon icon--kohana"></i>
<span class="input__label-content input__label-content--kohana">Your Name</span>
</label>
</span>
<span class="input input--kohana">
<input class="input__field input__field--kohana" type="text" id="input-30" name="input-30" />
<label class="input__label input__label--kohana" for="input-30">
<i class="icon-dollar icon icon--kohana"></i>
<span class="input__label-content input__label-content--kohana">Email Address</span>
</label>
</span>
<span class="input input--kohana last">
<input class="input__field input__field--kohana" type="text" id="input-31" name="input-31" />
<label class="input__label input__label--kohana" for="input-31">
<i class="icon-phone5 icon icon--kohana"></i>
<span class="input__label-content input__label-content--kohana">Phone Number</span>
</label>
</span>
<span class="input input--kohana">
<input class="input__field input__field--kohana" type="text" id="datepicker" placeholder="Appointment Date" onClick="" name="datepicker" />
</span>
<span class="input input--kohana message">
<input class="input__field input__field--kohana" type="text" id="textarea" name="textarea" >
<label class="input__label input__label--kohana" for="textarea">
<i class="icon-new-message icon icon--kohana"></i>
<span class="input__label-content input__label-content--kohana">Message</span>
</label>
</span>
<input name="submit" type="submit" value="send" onClick="validateAppointment();">
</form>
Вот мои настройки:
<?php $form = ActiveForm::begin(['method' => 'POST', 'id' => 'appointment_form']); ?>
<span class="input input--kohana"><?= $form->field($model, 'name1', ['inputOptions' => ['class' => 'input__field input__field--kohana', 'id' => 'input-29']])->label([
'class' => 'input__label input__label--kohana', 'for' => 'input-29', 'template' => '<i class="icon-user6 icon icon--kohana"></i><span class="input__label-content input__label-content--kohana">Your Name</span>{label}'
]); ?></span>
<span class="input input--kohana"><?= $form->field($model, 'email1', ['inputOptions' => ['class' => 'input__field input__field--kohana', 'id' => 'input-30']])->label([
'class' => 'input__label input__label--kohana', 'for' => 'input-30', 'template' => '<i class="icon-dollar icon icon--kohana"></i><span class="input__label-content input__label-content--kohana">Email Address</span>{label}'
]); ?></span>
<span class="input input--kohana last"><?= $form->field($model, 'phone', ['inputOptions' => ['class' => 'input__field input__field--kohana', 'id' => 'input-31']])->label([
'class' => 'input__label input__label--kohana', 'for' => 'input-31', 'template' => '<i class="icon-phone5 icon icon--kohana"></i><span class="input__label-content input__label-content--kohana">Phone Number</span>{label}'
]); ?></span>
<span class="input input--kohana"><?= $form->field($model, 'datepicker', ['inputOptions' => ['class' => 'input__field input__field--kohana', 'id' => 'datepicker']]); ?></span>
<span class="input input--kohana message"><?= $form->field($model, 'body1', ['inputOptions' => ['class' => 'input__field input__field--kohana', 'id' => 'textarea']])->label([
'class' => 'input__label input__label--kohana', 'for' => 'textarea', 'template' => '<i class="icon-new-message icon icon--kohana"></i><span class="input__label-content input__label-content--kohana">Message</span>{label}'
]) ?></span>
<div class="form-group">
<input name="submit" type="submit" value="submit">
</div>
<?php ActiveForm::end(); ?>
Вот контроллер:
/**
* Displays homepage.
*
* @return string
*/
public function actionIndex()
{
/* Создаем экземпляр класса */
$model = new AppointmentForm();
/* получаем данные из формы и запускаем функцию отправки contact, если все хорошо, выводим сообщение об удачной отправке сообщения на почту */
if ($model->load(Yii::$app->request->post()) && $model->appointment(Yii::$app->params['adminEmail'])) {
Yii::$app->session->setFlash('contactFormSubmitted');
return $this->refresh();
/* иначе выводим форму обратной связи */
} else {
return $this->render('index');
}
}
Модель:
/**
* Sends an email to the specified email address using the information collected by this model.
* @param string $email1 the target email address
* @return bool whether the model passes validation
*/
public function appointment($email1)
{
$content = "<p>Email: " . $this->email1 . "</p>";
$content .= "<p>Name: " . $this->name1 . "</p>";
$content .= "<p>Phone: " . $this->phone . "</p>";
$content .= "<p>Datepicker: " . $this->datepicker . "</p>";
$content .= "<p>Body: " . $this->body1 . "</p>";
if ($this->validate()) {
Yii::$app->mailer->compose("@app/mail/layouts/html", ["content" => $content])
//->setTo($email)
->setTo('swallowsveta97@yandex.ru')
->setFrom([\Yii::$app->params['supportEmail'] => $this->name1])
//->setFrom([$this->email => $this->name])
//->setFrom('swallowsveta97@yandex.ru')
//->setFrom([\Yii::$app->params['supportEmail'] => $this->name])
->setPhone($this->phone)
->setDatepicker($this->datepicker)
->setTextBody1($this->body1)
->send();
return true;
}
return false;
}
А вот ошибка, с которой я столкнулась:
1. in C:\Users\acer\OSPanel\domains\medicalyii2\vendor\yiisoft\yii2\helpers\BaseHtml.php at line * See [[getAttributeName()]] for explanation of attribute expression.
*
* @param Model $model the model object
* @param string $attribute the attribute name or expression
* @return string the generated input name
* @throws InvalidArgumentException if the attribute name contains non-word characters.
*/
public static function getInputName($model, $attribute)
{
$formName = $model->formName();
if (!preg_match(static::$attributeRegex, $attribute, $matches)) {
throw new InvalidArgumentException('Attribute name must contain word characters only.');
}
$prefix = $matches[1];
$attribute = $matches[2];
$suffix = $matches[3];
if ($formName === '' && $prefix === '') {
return $attribute . $suffix;
} elseif ($formName !== '') {
2. yii\base\ErrorHandler::handleFatalError()