Cakephp с использованием двух моделей - PullRequest
0 голосов
/ 10 апреля 2009

В моем CakePHP forms_controller У меня есть:

var $uses=array('Form','Field');
// ...
$this->set('retrived',$this->Field->find("all",array('conditions'=>array('Field.formname'=>$formname,))));

и в представлении:

<?php foreach ($retrived as $r): ?>
    <?php echo $r['Field']['fieldname']; ?><br>  
<?php endforeach; ?>

Я не получаю ответ за это

На самом деле мои поля таблицы будут выглядеть так:

fieldname   
  formname  
  type  
  value     

Подробнее с моего forms_controller:

function views()
{
    if (!empty($this->params['form'])) 
    {
        $this->set('fieldctr',$this->params['form']['formfieldctr']);
          $fieldctr=$this->params['form']['formfieldctr'];

        if(!empty($this->params['form']['formnameelements']))
        {
            $this->set('formname',$this->params['form']['formnameelements']);//formname
            $this->Form->saveField('name',$this->params['form']['formnameelements']);
        }
        else 
        { 
            $this->set('formname','MyForm');//formname
            $this->Form->saveField('name','MyForm');
        }

        $this->Form->saveField('body',$this->params['form']['formelements']);//inserts into database

        $ret = $this->Form->query("Select id from forms order by id DESC LIMIT 1");
        $newid=$ret[0]['forms']['id'];echo $newid;
        $upd=$this->Form->query("update forms set ctr=$fieldctr where id= $newid");
        $formname=$this->params['form']['formnameelements'];  

        $n="$formname";

        $array = $this->params['form']['formfieldnameelements'];
        $comma_separated = explode(",", $array);
        for($i=0;$i<$fieldctr;$i++)
        {
            echo $comma_separated[$i]; 
            echo "     ";
            $n="$comma_separated[$i]";

            //insert the fields of each form to the table fields
            $this->data['Field']['fieldname'] = $comma_separated[$i];
            $this->data['Field']['formname'] = $formname;

            $this->Field->saveAll($this->data);
        }

В приведенном выше методе я вставляю имя формы в таблицу форм.

И вставка этого имени формы вместе с именем поля в таблицу полей:

function formupdate()
{
    $this->set('fieldctr',$this->params['form']['formfieldctr']);
    $fieldctr=$this->params['form']['formfieldctr'];

    $this->set('formname',$this->params['form']['formnameelements']);//formname
    $formname=$this->params['form']['formnameelements'];

    $ret = $this->Field->query("SELECT fieldname FROM fields WHERE fields.formname = "."'$formname'"."order by id ASC");
    for($q=0;$q<$fieldctr;$q++)
    {
        $fieldname[$q]=$ret[$q]['fields']['fieldname'];
    }

    $this->set('retrived',$this->Field->find("all",array('conditions'=>array('Field.formname'=>$formname))));

    $array = $this->params['form']['formfieldvalueelements'];
    $comma_separated = explode(",", $array);

    for($i=0;$i<$fieldctr;$i++)
    {
        echo $comma_separated[$i]; 
        echo "     ";
        $n="$comma_separated[$i]";

        echo $fieldname[$i];

        $this->Field->updateAll(array('Field.value' => "'$comma_separated[$i]'"),array('Field.fieldname' => $fieldname[$i],'Field.formname'=>$formname));
        }
    $this->set('retrived',$this->Field->find("all",array('conditions'=>array('Field.formname'=>$formname,))));

} // end of function formupdate

В приведенном выше методе formupdate я вставляю значения соответствующих значений этих полей в таблицу полей ... Все значения вставляются правильно - но в моем представлении formupdate.ctp:


На мой взгляд, ничего не отображается ... даже если в таблице есть содержимое ..

Пожалуйста, разрешите мою проблему

Ответы [ 2 ]

0 голосов
/ 13 апреля 2009

Арун,

Пожалуйста, опубликуйте код, который вы используете! Возможно, что ошибка небольшая, но, не зная, что вы делаете, невозможно помочь больше, чем доктор. Лектер сделал.

Когда вы говорите, что таблица полей обновлена ​​правильно, вы имеете в виду, что вы можете безопасно вызывать метод Model :: save ()? Затем вы вызываете Model :: read () или Model :: find () в контроллере, а затем используете возвращенные значения из этого значения для установки переменной, к которой можно получить доступ в представлении?

0 голосов
/ 13 апреля 2009

По названиям ваших моделей, я думаю, можно с уверенностью заключить, что вы пытаетесь выдать какой-то HTML. Поскольку вопрос на самом деле не завершен (где код?), Мы не можем сказать, что с ним не так.

Диким предположением может быть то, что что-то там удаляется или игнорируется вашим браузером.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...