@EVOSandru6

Почему в Yii не сработало safeOnly в setAttributes?

Добрый день,

Есть модель Bid с некоторым кол-вом свойств, которых нет в базе, но необходимые в afterSave

class Bid extends ActiveRecord
{
    public $adressFrom;
    public $adressTo;
    public $placeFrom;
    public $placeTo;
    public $categoryCargo;
    public $timeStart;
    public $timeFinish;
    public $placeStart;
    public $placeFinish;

...

public function rules()
	{
		return
        [
             ...
['placeStart, placeFinish, adressStart, adressFinish, timeStart, timeFinish, categoryCargo, placeFrom, placeTo, adressFrom, adressTo, description, description_en, description_kz', 'safe'],

...


В экшене create такая проблема, аттрибуты не могут присвоится массово:
...
if(isset($_POST['Bid']))
        {
            $model->setAttributes($_POST['Bid'], false);   // safeOnly
            //My::printArr($_POST['Bid']);
            My::printArr($model->attributes);
            // die();
            if($model->save())
                $this->redirect(array('view','id'=>$model->id));
        }
...


Вот этот print_r:

My::printArr($model->attributes);

Не выводит полей, не связанных с таблицей в базе почему-то:

Array
(
    [urgency] => 2
    [wish_price] => 5000
    [description] => 
    [id] => 
    [customer_id] => 
    [driver_id] => 
    [views] => 
    [status] => 
    [name] => 
    [name_kz] => 
    [name_en] => 
    [name_alias] => 
    [description_en] => 
    [description_kz] => 
    [meta_d] => 
    [meta_k] => 
    [order_sort] => 
    [sys_date] => 
    [sys_date_update] => 
    [sys_user] => 
    [exist] => 
    [shifr] => 
    [name_full] => 
    [name_full_kz] => 
)


Все, кроме них.

В форме аналогично прописаны поля для данных свойств:

<?php echo $form->labelEx($model,'adressFrom'); ?>
<?php echo $form->textField($model,'adressFrom',array('size'=>60,'maxlength'=>255)); ?>
<?php echo $form->error($model,'adressFrom'); ?>


В чем проблема может быть?
  • Вопрос задан
  • 128 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Glimor
develop
неправильно rules прописал, Должно быть так
['placeStart', 'placeFinish', 'adressStart', 'adressFinish', 'timeStart', 'safe'],

или так
[['placeStart', 'placeFinish', 'adressStart', 'adressFinish', 'timeStart'], 'safe'],
то-есть каждый атрибут отдельно, в кавычках
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы