{ __MIA }

Symfony2笔记 - 使用Symfony2创建页面

刚学Symfony2,记录下,也当做加深印象吧。

 

先创建一个Bundle

php app/console generate:bundle --namespace=Test/HiBundle --format=yml

命令一路执行完成之后,

1. 在app/AppKernel.php中会自动加入新创建的Bundle。

2. 在app/config/routing.yml会自动加入新创建的Bundle对应的routing.yml的引用,所以,针对这个Bundle的路由配置应当在这个引用指向的文件中配置。

3. 在src下,会看到新创建的Bundle对应的目录

     目录解释

 如果现在在地址栏中输入 http://localhost/proejct_name/web/app_dev.php/hello/world 的话,就会看到 Hello world! 的字样。

这就创建了一个最基础的Bundle了。

 

默认地,Bundle中routing.yml中生成的内容如下:(我做了些修改,MyTest原本是Default)

test_hi_homepage:
    pattern:  /hello/{name}
    defaults: { _controller: TestHiBundle:MyTest:index }

红色部分: 路由的名称

绿色部分: 匹配URL的模式,如 /hello/world  则会匹配成功,并且world会被传递到控制器中

蓝色部分: 该路由指向的控制器,这里的TestHiBundle明确指定了是哪个Bundle中的控制器会被执行。Test是namespace,HiBundle是Bundle,会执行MyTestController中的index.action

 

经过路由,到达了控制器中的某个Action,继续上面的例子,到达indexAction,代码如下:

namespace Test\HiBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Response;

class MyTestController extends Controller
{
    public function indexAction($name)
    {// return $this->render('TestHiBundle:Default:index.html.twig', array('name' => $name));
        return new Response('<h1>'.$name.'</h1>');
    }
}

 

控制器最终会返回一个Response对象,在这里,则会返回一个twig模板(被注释掉),可以在第二个参数的位置传入需要在模板中使用的变量。

Symfony2中使用了PHP5.3中新增加的命名空间(本人对PHP还不是很了解,原本一直是Java阵营的),所以在使用到一些如Response对象的时候,需要引入对应的命名空间才能使程序正常运行。(在这一点上,如果有什么不正确的,请各位指出)

 

下面,一起看看这个示例中的twig模板,代码如下:

Hello {{ name }} !!

"{{ }}"是twig模板的语法,而name则是从控制器传递过来的变量,这样,页面就会显示Hello xxx !! 。

 当然,我们不一定要使用twig模板,我们还是可以使用我们比较熟悉的php模板。

那么,现在来说说

 return $this->render('TestHiBundle:MyTest:index.html.twig', array('name' => $name));

 

 首先,如果要使用render(),那么这个控制器就需要继承Symfony2提供的Controller,所以也需要引入Controller。

render()第一个参数是指定需要返回哪个模板,第二个参数是需要在模板中使用的变量。

那么,TestHiBundle:MyTest:index.html.twig指的是什么呢?

同routing.yml一样,TestHiBundle也就确定了具体是哪一个Bundle,然后MyTest指定了模板所属的控制器,换成文件目录来看的话,那么index.html.twig的具体路径就是src/Test/HiBundle/MyTest/index.html.twig。

对于twig模板,实在是很强悍,而语法,网络上也有很多博主作出了分享了,在这我就不重复了,虽然我也暂时说不出个123来,科科科~

 

至此,一个最简单的Bundle就创建出来了。

 

其实我也是看Symfony2提供的文档进行学习的,对于英语水平渣渣的我来说是个不小的挑战啊,加油吧!

 

第一次写关于这类的博客,大家手下留情啊。

posted @ 2013-10-26 18:25  miaprogram  阅读(71)  评论(0)    收藏  举报