renderPartial другой модели Yii несколько моделей работают, но не все из них

у меня есть вид, который объединяет много моделей, и я делаю вкладку, каждая из которых содержит разные модели

это мой сценарий в представлении

<?php
$this->widget(
'booster.widgets.TbTabs',
array(
'type' => 'tabs',
'tabs' => array(
array(
'label'=>'Genset',
'content'=>$this->renderPartial('/ats/genset', array('model'=>new genset), true ),
'active'=> false
),
array(
'label'=>'ATS',
'content'=>$this->renderPartial('/ats/ats', array('model'=>new ats), true ),
'active'=> false
),
array(
'label'=>'UPS',
'content'=>$this->renderPartial('/ats/ups', array('model'=>new ups), true ),
'active'=> false
),
array(
'label'=>'PLN',
'content'=>$this->renderPartial('/ats/pln', array('model'=>new pln), true ),
'active'=> false
),
),
)
)
?>

на последней вкладке, название которой PLN не работает и возвращает ошибку, как это

CException
Свойство «pln.merk» не определено.

где есть что-то странное, pln — это моя модель, а merk — это не один из столбцов из pln, а из другой модели ats, я создал этот файл представления на основе ats, в котором есть столбец merk, но это не имеет смысла, когда все представления, которые я делаю визуально, как Genset, UPS, ATS работает нормально

только pln и несколько других моделей выдают сообщение об ошибке, например, они почему-то не распознают столбец модели pln, а вместо этого читают неверный столбец из модели ats

Редактировать:

В основном представление генерируется CRUD, и это файл admin.php, где он содержит CGridView

<?php
/* @var $this PlnController */
/* @var $model pln */

$this->breadcrumbs=array(
'Plns'=>array('index'),
'Manage',
);

$this->menu=array(
array('label'=>'List pln', 'url'=>array('index')),
array('label'=>'Create pln', 'url'=>array('create')),
);

Yii::app()->clientScript->registerScript('search', "$('.search-button').click(function(){
$('.search-form').toggle();
return false;
});
$('.search-form form').submit(function(){
$('#pln-grid').yiiGridView('update', {
data: $(this).serialize()
});
return false;
});
");
?>

<h1>Manage Plns</h1>

<p>
You may optionally enter a comparison operator (<b>&lt;</b>, <b>&lt;=</b>, <b>&gt;</b>, <b>&gt;=</b>, <b>&lt;&gt;</b>
or <b>=</b>) at the beginning of each of your search values to specify how the comparison should be done.
</p>

<?php echo CHtml::link('Advanced Search','#',array('class'=>'search-button')); ?>
<div class="search-form" style="display:none">
<?php $this->renderPartial('_search',array(
'model'=>$model,
)); ?>
</div><!-- search-form -->

<?php $this->widget('zii.widgets.grid.CGridView', array(
'id'=>'pln-grid',
'dataProvider'=>$model->search(),
'filter'=>$model,
'columns'=>array(
'id',
'siteid',
'capacity',
'arus_r',
'arus_s',
'arus_t',
/*
'id_pelanggan',
'jumlah_fasa',
*/
array(
'class'=>'CButtonColumn',
),
),
)); ?>

ATS.php

<?php
/* @var $this AtsController */
/* @var $model ats */

$this->breadcrumbs=array(
'Ats'=>array('index'),
'Manage',
);

$this->menu=array(
array('label'=>'List ats', 'url'=>array('index')),
array('label'=>'Create ats', 'url'=>array('create')),
);

Yii::app()->clientScript->registerScript('search', "$('.search-button').click(function(){
$('.search-form').toggle();
return false;
});
$('.search-form form').submit(function(){
$('#ats-grid').yiiGridView('update', {
data: $(this).serialize()
});
return false;
});
");
?>

<h1>Dapot</h1>

<p>
You may optionally enter a comparison operator (<b>&lt;</b>, <b>&lt;=</b>, <b>&gt;</b>, <b>&gt;=</b>, <b>&lt;&gt;</b>
or <b>=</b>) at the beginning of each of your search values to specify how the comparison should be done.
</p>

<?php
$this->widget(
'booster.widgets.TbTabs',
array(
'type' => 'tabs',
'tabs' => array(
array(
'label'=>'Genset',
'content'=>$this->renderPartial('/ats/genset', array('model'=>new genset), true ),
'active'=> false
),
array(
'label'=>'ATS',
'content'=>$this->renderPartial('/ats/ats', array('model'=>new ats), true ),
'active'=> false
),
array(
'label'=>'UPS',
'content'=>$this->renderPartial('/ats/ups', array('model'=>new ups), true ),
'active'=> false
),
array(
'label'=>'Rectifier',
'content'=>$this->renderPartial('/ats/rectifier', array('model'=>new rectifier), true ),
'active'=> false
),
array(
'label'=>'Baterai',
'content'=>$this->renderPartial('/ats/baterai', array('model'=>new baterai), true ),
'active'=> false
),
array(
'label'=>'BBS',
'content'=>$this->renderPartial('/ats/bbs', array('model'=>new bbs), true ),
'active'=> false
),
array(
'label'=>'Inverter',
'content'=>$this->renderPartial('/ats/inverter', array('model'=>new inverter), true ),
'active'=> false
),
array(
'label'=>'Trafo',
'content'=>$this->renderPartial('/ats/trafo', array('model'=>new trafo), true ),
'active'=> false
),
/*array(
'label'=>'PLN',
'content'=>$this->renderPartial('/ats/pln', array('model'=>new PLN), true ),
'active'=> false
),*/
),
)
)
?>

0

Решение

Я решил эту проблему, поэтому я использую генератор crud, который создает код опции расширенного поиска ниже,
‘model’ => $ model перезаписывает желаемую модель, поэтому я должен удалить этот код ниже, если вы используете генератор crud

<?php echo CHtml::link('Advanced Search','#',array('class'=>'search-button')); ?>
<div class="search-form" style="display:none">
<?php $this->renderPartial('_search',array(
'model'=>$model,
)); ?>
</div><!-- search-form -->

После этого я попытался использовать функцию поиска, и она не работала, поэтому я добавил для каждого представления, чтобы сбросить его атрибуты

$model_x=new model_x('search');
$model_x->unsetAttributes();
if(isset($_GET['model_x']))
$model_x->attributes=$_GET['model_x'];

Теперь я застрял в представлении, обновить, удалить, где он всегда использует ats в качестве идентификатора первичного ключа из loadModel в файле контроллера

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]