将一个变量从控制器放到视图中

时间:2014-11-22 16:38:37

标签: php symfony

我到目前为止研究的所有示例都是将控制器的结果放入使用数组进行查看。那是唯一的选择吗?

我在这里做了一个脚本,它给我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 . ",";  
                }
            }
        }

    }

我有哪些选项可以将$ i中的数字放在我的视图中? 我尝试使用数组,但我只得到第一个数字,所以我猜这不是一个选项。

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

我为路由设置了一个前缀,因此我可以在symfony/web/app_dev.php/numbers/

上访问它

1 个答案:

答案 0 :(得分: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));
    }
}

Twig文件(index.html.twig):

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