2016-03-04 38 views
2

我们正在尝试两种发布到相同动作的表单。 我们试图从第一个表单中检索输入字段txt1的值,并将其传递给控制器​​列表将此值发送到第二个表单的for循环中用于动态创建表单的位置。 但是正在显示这个错误: “未定义变量:计数器[APP \视图\列出\ add.ctp,线107] CakePHP的:快速发展PHP框架 CakePHP的2.6.1” 我附上用于控制器的代码并查看变量未被传递到cakephp中查看

查看:

<script> 
    $(document).ready(function() { 

     $('#txtt1').on('change',function(){ 

      var paper=$(this).val(); 
       //alert('hello'); 
      if(paper<=0) 
       alert('No of members should be greater than zero'); 
      if(paper!='') 
       //$('#apap').hide(); 
     }); 
    }); 
</script> 
<h2>Member Details</h2> 

    <div id="post1"> 
</div> 
<?php 
echo $this->form->create('List',array('action'=>'add')); 
echo $this->form->input('txt1',array('id'=>'txtt1')); 
//echo $this->form->input('txt2',array('id'=>'txt2')); 
echo $this->Js->submit('Enter No. of Panel Members: ',array('update'=>'#success','id'=>'apap','class'=>'butstyle')); 

?> 
</div>   
<div id='success'> 
<?php 
$options =array('Mr.'=>'Mr.','Mrs.'=>'Mrs.','Ms.'=>'Ms.','Dr.'=>'Dr.','Prof'=>'Prof','Arch'=>'Arch'); 
echo $this->Html->script('jquery.min'); 

for($i=1;$i<=$counter;$i++) 
{ 
    echo $this->form->create('List',array('action'=>'add','type'=>'file','id'=>'frm'));?> 
    <?php 
    echo $this->form->input('salutation',array('type'=>'select','options'=>$options,'empty'=>'--Select--'));?> 

    <?php 
echo $this->form->input('name');?> 
<?php 
echo $this->form->input('designation',array('type'=>'select','options'=>array($designation,'Others'=>'Others'),'empty'=>'--Select--'));?> 
<div id="y" style="display: none"> 
Designation: 
<input type="text" id="txtx" name="data[List][desig_txt]"/> 
</div> 
    <?php 
    echo $this->form->input('specialization',array('type'=>'select','options'=>array($specialization,'Others'=>'Others'),'empty'=>'--Select--'));?> 

    <div id="x" style="display: none"> 
    Specialization: 
<input type="text" id="txty" name="data[List][spec_txt]" /> 
</div> 

<?php echo 
$this->form->input('university',array('type'=>'select','options'=>array($university,'Others'=>'Others'),'empty'=>'--Select--'));?> 
    <div id="w" style="display: none"> 
University: 
<input type="text" id="txtw" name="data[List][univ_txt]" /> 
</div> 
<?php 
echo $this->form->input('college',array('type'=>'select','empty'=>'--Select--'));?> 
<div id="z" style="display: none"> 
College: 
<input type="text" id="txtz" /> 
</div> 


<?php 
    echo $this->form->input('address'); 
    echo $this->form->input('phone'); 
echo $this->form->input('email'); 
    echo $this->form->input('papercode'); 
//echo $this->from->checkbox('approved'); 
    echo $this->form->end('Save'); 
    ?> 

    <?php } ?> 


    </div> 

控制器:

function add($paper=NULL) 
    { 
     $this->loadModel('Designation'); 
     $this->loadModel('Specialization'); 
     $this->loadModel('University'); 
     //$this->loadModel('College'); 
     $this->set('designation',$this->Designation->find("list",array(
     'fields'=>array('desig_name','desig_name')))); 
     $this->set('specialization',$this->Specialization->find("list",array(
     'fields'=>array('spec_name','spec_name')))); 
     //echo $paper; 
     $this->set('paper',$paper); 
     $this->set('university',$this->University->find("list",array('fields'=>array('univ_name','univ_name')))); 
     $this->set('counter',''); 
     if(!empty($this->data)) 
     { //print_r($this->data); 
      if(empty($this->data['Panel'][0]['name'])) 
      { $count1=$this->data['Panel']['firstform']; 
       $count2=$this->data['Panel']['secondform']; 
       $counter=$count1+$count2; 
       //print_r('llalla'); 
        if($this->request->is('ajax')) 
        { print_r($counter); 
        $this->set('counter',$counter); 
        $this->render('add','ajax'); 
        } 

      } 

      else{ 
       print_r('balala'); 
       $counter=$this->data['Panel']['extra']; 
       print_r('MR'.$counter); 

       for($i=0;$i<$counter;$i++) 
       { 
        print_r($i); 
        if($this->data['Panel'][$i]['designation']=="Others") 
        { 
         $desig=$this->data['Panel'][$i]['desig_txt']; 
         $this->loadModel('Designation'); 
         $this->Panel->create(); 
         $this->request->data['Designation']['desig_name']=$this->request->data['Panel'][$i]['desig_txt']; 
         $designationid=$this->Designation->find('count',array('fields'=>array('desig_id')))+1; 
         $this->request->data['Designation']['desig_id']= $designationid; 
         //print_r($this->request->data['Designation']['desig_name']); 
         if($this->Designation->save($this->request->data)) 
          { echo "hello";} 

        } 
        else 
        { 
         $desig=$this->data['Panel'][$i]['designation']; 
        } 
        if($this->data['Panel'][$i]['specialization']=="Others") 
        { 
         $this->loadModel('Specialization'); 
         $spec=$this->data['Panel'][$i]['spec_txt']; 
         $this->Panel->create(); 
         $this->request->data['Specialization']['spec_name']=$this->request->data['Panel'][$i]['spec_txt']; 
         $specializationid=$this->Specialization->find('count',array('fields'=>array('spec_id')))+1; 
         $this->request->data['Specialization']['spec_id']= $specializationid; 
         //print_r($this->request->data['Specialization']['spec_name']); 
         if($this->Specialization->save($this->request->data)) 
          { echo "hello";} 
        } 
        else 
        { 
         $spec=$this->data['Panel'][$i]['specialization']; 
        } 
        //if($this->Designation->save($univ)){ echo "hello";} 
        if($this->data['Panel'][$i]['university']=="Others") 
        { 
         $this->loadModel('University'); 
         $univ=$this->data['Panel'][$i]['univ_txt']; 
         $this->Panel->create(); 
         $this->request->data['University']['univ_name']=$this->request->data['Panel'][$i]['univ_txt']; 
         $universityid=$this->University->find('count',array('fields'=>array('univ_id')))+1; 
         $this->request->data['University']['univ_id']= $universityid; 
         //print_r($this->request->data['University']['univ_name']); 
         if($this->University->save($this->request->data)) 
          { echo "hello";} 

        } 
        else 
        { 
         $univ=$this->data['Panel'][$i]['university']; 
        } 
        //if($this->Designation->save($univ)){ echo "hello";} 
        if($this->data['Panel'][$i]['college']=="Others") 
        { 
         $this->loadModel('College'); 
         $college=$this->data['Panel'][$i]['college_txt']; 
         $this->Panel->create(); 
         $this->request->data['College']['college_name']=$this->request->data['Panel'][$i]['college_txt']; 
         $collegeid=$this->College->find('count',array('fields'=>array('college_id')))+1; 
         $this->request->data['College']['college_id']= $collegeid; 
         //print_r($this->request->data['University']['univ_name']); 
         if($this->College->save($this->request->data)) 
          { echo "hello";} 

        } 
        else 
        { 
         $college=$this->data['Panel'][$i]['college']; 
        } 

        $this->Panel->query('insert into panels(salutation,name,designation,specialization,university,college,address,phone,email,papercode) values("'.$this->data['Panel'][$i]['salutation'].'","'.$this->data['Panel'][$i]['name'].'","'.$desig.'","'.$spec.'","'.$univ.'","'.$college.'","'.$this->data['Panel'][$i]['address'].'","'.$this->data['Panel'][$i]['phone'].'","'.$this->data['Panel'][$i]['email'].'","'.$this->data['Panel'][$i]['papercode'].'")'); 
       } 
       $this->redirect(array('controller'=>'panels','action'=>'index',$this->data['Panel'][$i-1]['papercode'])); 
      } 


     } 
    } 
+1

那些条件满足你在哪里设置'RD'? –

+1

对不起,我没有得到你。我想你是问$ this-> data ['List'] ['txt1']是否包含值或noot。我打印了这个。它包含该值,但变量rd未被传递给视图。 – Nikita

+0

需要检查的几件事: *代码是否正在评估'rd'变量被设置的部分? *因为您在设置'rd'后立即使用$ this-> render(),#success的所有内容都将被覆盖,您是否真的想这么做? *获取支持AJAX请求的最新版本的DebugKit并检查设置的变量。 *在此处检查并发布Chrome开发人员工具(F12)面板的输出。 注意:下次请正确缩进代码。 – PedroTanaka

回答

0

当数据进入先救.Means您已设置 '$ RD' 变量t IME当网页加载,然后它不会在你的,如果条件

 

    if(!empty($this->data['List']['txt1'])) 
    { 
      echo 'kkl'; 
      if($this->RequestHandler->isAjax()) 
      { 
        echo 'dddd'; 
        $this->set('rd',$this->data['List']['txt1']); 
        $this->render('add','ajax'); 

      } 
     } 

你应该设置“RD”变量在这样

$this->set('rd','');

现在RD变量函数的开始将在这两个条件中设置甚至去在页面加载或保存数据

+0

我已经更改了控制器中的条件,但仍然无法动态创建表单。您指定的解决方案也不起作用。 – Nikita

+0

你能否提供控制器的代码。根据我提供的解决方案的当前代码 –

+0

在您修改的控制器代码中,您没有设置'$ rd'变量。在计数器变量 –