Сделал Виджет подписки:
в шаблоне:
Код: Выделить всё
<?
echo \app\widgets\subscr::widget();
?>
Код: Выделить всё
*/
public static function tableName()
{
return 'subscription';
}
/**
* {@inheritdoc}
*/
public function rules()
{
return [
[['email_subs'], 'unique'],
[['email_subs'], 'email'],
[['email_subs'], 'required'],
[['ts_subs'], 'safe'],
[['email_subs'], 'string', 'max' => 255],
];
}
/**
* {@inheritdoc}
*/
public function attributeLabels()
{
return [
'id_subs' => Yii::t('app', 'Id Subs'),
'email_subs' => Yii::t('app', 'Email'),
'ts_subs' => Yii::t('app', 'Ts Subs'),
];
}
}
Код: Выделить всё
<?php
namespace app\widgets;
use yii\base\Widget;
use app\common\Subscription;
class subscr extends Widget
{
public $email_subs;
public function init() {
$this->email_subs = new subscription();
}
public function run()
{
return $this->render('subscription',[
'model' => $this->email_subs,
]);
}
}
Код: Выделить всё
<?php
use yii\widgets\ActiveForm;
use yii\helpers\Html;
use yii\widgets\Pjax;
?>
<?php Pjax::begin(); ?>
<div class="form-items-holder">
<? $form = ActiveForm::begin(['id' => 'subscript', 'action' => yii\helpers\Url::to(['app/subs']), 'options' => ['data' => ['pjax' => true] ] ]) ?>
<?= $form->field($model,'email_subs')->textInput()->label('E-mail'); ?>
<?= Html::input('submit','submit','Подписаться'); ?>
<?php ActiveForm::end(); ?>
</div>
<?php Pjax::end(); ?>
<div style="clear:both;"></div>
Код: Выделить всё
/*Подписка контроллер*/
public function actionSubs()
{
$model = new Subscription();
if ($model->load(Yii::$app->request->post()) && $model->validate()){
$email_subs = Html::encode($model->email_subs);
$model->email_subs = $email_subs;
if ($model->save()) {
Yii::$app->response->refresh(); //очистка данных из формы
echo "<div class='alert alert-success' role='alert' style='align: center'>
<b> Подписка оформлена!<b>
</div>";
exit;
}
} else {
if(strpos($model->errors['email_subs'][0], 'уже занято') !== false) {
echo "<div class='alert alert-danger' role='alert' aria-label='Close' style='width: 100%'>
<b style='color: #9E5645'> Адрес ".$model->email_subs." уже подписан!</b>
</div>
";
}
}
exit;
}
/*Конец контроллера подписки*/
На Локальном сервере все работает отлично. Переношу на хостинг, Код не отробатывает, Точнее Если адрес не проходит валидацию, то правильно выдает соответсвующую ошибку.
Если проходит то данные не сохраняются в БД. В Дебаггере нет SQL запроса на обновление таблицы Подписки. т.е электронный адрес проходит Валидацию (проверил) но не отрабатывает if ($model->save()).
Версия ПХП 5,6.