2012-01-03 15 views
0

多くのテキストフィールドを持つフォームがあり、selectデータとmultiselectのどちらにも同じデータがデータベースから取得されています Iコメント行Bのすべてがうまく行くが、私のコメントを解除ラインBエラーが発生したときにZend Frameworkの3011のZendFramework-1.11.11 Zend Form.phpで最大実行時間が30秒を超えました

と言っている:328 rows.Nowを含むデータベーステーブルという会社へ

ここ
//Form1 
    $form_project=new Project_Form_AddProject(); 
    //Form2 
    $form_project_type=new Project_Form_ProjectType(); 

    //add values to dropdown companies 
    $object_company=new Project_Model_DbTable_Company(); 
    $list_companies=$object_company->fetchAll(); 
    foreach ($list_companies as $clist) : 
     $name = $clist['company_name']; 

     $dropdown_list[$clist['company_id']] = $clist['company_name']; 

    endforeach; 
    foreach ($dropdown_list as $key => $value): 
     //Line A 
     $form_project->customer->addMultiOptions($dropdown_list);//customer is select 
     //Line B 
     $form_project_type->partner->addMultiOptions($dropdown_list);//partner is multiselect 
    endforeach; 

クラスProject_Model_DbTable_Companyマップ:次のコードによって、

Maximum execution time of 30 seconds exceeded in ZendFramework-1.11.11\\Zend\Form.php on line 3011 

この問題が発生するのはなぜですか?同じフォームで2つのドロップダウンに入れようとしている余分なデータが原因ですか?Plzは私に示唆しています。

+0

実際に328個のオプションをドロップダウンすると良い考えですか? – vascowhite

+0

したがって、ドロップダウンの代わりに、ユーザーは328のエントリの中から1つの選択肢を選択する必要があるため、オプションにすることができます。 – ryan

答えて

0

問題は、第2のforeachループにあります。これらの行

foreach ($dropdown_list as $key => $value): 
    //Line A 
    $form_project->customer->addMultiOptions($dropdown_list);//customer is select 
    //Line B 
    $form_project_type->partner->addMultiOptions($dropdown_list);//partner is multiselect 
endforeach; 

328オプション328回を追加しています。 addMultiOptions()メソッドは配列を受け入れ、それを反復処理します。私はまだそれがドロップダウンで328個のオプションを持っている悪いアイデアだと思いますが、あなたのコードがmax_execution_time限度内で実行できるようにする必要があることを

//Line A 
$form_project->customer->addMultiOptions($dropdown_list);//customer is select 
//Line B 
$form_project_type->partner->addMultiOptions($dropdown_list);//partner is multiselect 

- :あなたのコードに変更する必要があります。私は、あなたの部分についての少しの考えは、はるかにエレガントでユーザーフレンドリーな選択肢を発見するだろうと確信しています。

また、このように見えるためにあなたのforeachブロックを変更してみてください: -

foreach ($list_companies as $clist){ 
    $name = $clist['company_name']; 
    $dropdown_list[$clist['company_id']] = $clist['company_name']; 
} 

あなたはあなたのコードがはるかに読みやすいでしょう。

関連する問題