2014-11-22 66 views
-1

我到目前爲止所研究的所有例子都是將控制器的結果放到一個數組中進行查看。那是唯一的選擇?把一個變量從控制器中查看

我在這裏做的是給我從1到100

控制器素數的腳本

class NumbersController extends Controller 
{ 
    /** 
    * @Route("/") 
    * @Template() 
    */ 
    public function indexAction($n=5) 
    { 
      for($i=1;$i<=$n;$i++){ //numbers to be checked as prime 
       $counter = 0; 
       for($j=1;$j<=$i;$j++){ //all divisible factors 
        if($i % $j==0){ 
         $counter++; 
        } 
       } 
       //prime requires 2 rules (divisible by 1 and divisible by itself) 
       if($counter==2){ 
       echo $i . ","; 
       } 
      } 
     } 

    } 

哪些選項我已經把從$我的號碼,我的看法? 我試圖用數組來做,但我得到的只是第一個數字,所以我想這不是一個選項。

{{ render(controller('AcmeDemoBundle:Numbers:index', { 'n': 100 })) }} 

我設置好的一個路由前綴,這樣我就可以訪問它在symfony/web/app_dev.php/numbers/

+0

您是否嘗試過用一個數組來存儲價值? – 2014-11-22 16:40:59

+0

我想過但對我沒有任何意義。 Symfony應該使這個東西更容易不復雜。 – crixi 2014-11-22 16:43:00

+0

一旦你調用'return','indexAction'函數就會停止運行。在你的例子中'$ i'是一個循環變量;如果您的'return'在'for'循環中,它會在一次迭代後停止。 – 2014-11-22 16:47:04

回答

2

好像你還沒有Symfony2的基本的瞭解。

您可以在您的控制器中構建一個數據數組,並在返回時將其傳遞給render方法,這是正確的方法。下面用自己的修改代碼

用途:

控制器:

class NumbersController extends Controller 
{ 
    /** 
    * @Route("/") 
    */ 
    public function indexAction($n=5) 
    { 
     $data = array(); 
     for ($i = 1; $i <= $n; $i++) 
     { 
      // numbers to be checked as prime 
      $counter = 0; 

      for ($j = 1; $j <= $i; $j++) { 
       // all divisible factors 
       if ($i % $j == 0) { 
        $counter++; 
       } 
      } 

      // prime requires 2 rules (divisible by 1 and divisible by itself) 
      if ($counter == 2) { 
       $data[] = $i; 
      } 
     } 

     return $this->render('index.html.twig', array('data' => $data)); 
    } 
} 

嫩枝文件(index.html.twig):

{{ data|join(',') }} 
+0

聽起來不錯,但'錯誤:達到'100'的最大功能嵌套級別,正在中止! ' – crixi 2014-11-22 16:58:55

+0

你可以用你的路由,控制器和樹枝文件內容更新你的問題 – Prakash 2014-11-22 17:10:41

+0

我剛更新了它。謝謝! – crixi 2014-11-22 17:20:10

相關問題