symfony2里的MVC
1、 开发模式与发布模式
debug模式 http://127.0.0.1/app_dev.php/
release模式 http://127.0.0.1/
2、日志目录和cache目录
debug模式调试ok了之后,需要清理一下cache才能用release模式访问
php app/console cache:clear # 方式一 rm -rf app/cache/* # 方式二
修改日志文件权限
chmod -R 777 app/cache/ chmod -R 777 app/logs/
3、外网访问debug模式
注释文件/web/app_dev.php以下内容
if (isset($_SERVER['HTTP_CLIENT_IP']) || isset($_SERVER['HTTP_X_FORWARDED_FOR']) || !(in_array(@$_SERVER['REMOTE_ADDR'], array('127.0.0.1', 'fe80::1', '::1')) || php_sapi_name() === 'cli-server') ) { header('HTTP/1.0 403 Forbidden'); exit('You are not allowed to access this file. Check '.basename(__FILE__).' for more information.'); }
4、什么是Bundle
bundle英文释义是捆,在symfony2中它就相当于一个组件
bundle里一般包含MVC的所有内容以及Resource和config
做一个静态页面
1、写一个静态页面
app/Resources/views/目录创建一个blog目录,并在blog里创建list.html.twig文件内容如下,也可以随意
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"> <!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! --> <title>MyWebSite</title> <!-- 新 Bootstrap 核心 CSS 文件 --> <link rel="stylesheet" href="//cdn.bootcss.com/bootstrap/3.3.5/css/bootstrap.min.css"> <!-- 可选的Bootstrap主题文件(一般不用引入) --> <link rel="stylesheet" href="//cdn.bootcss.com/bootstrap/3.3.5/css/bootstrap-theme.min.css"> <!-- jQuery文件。务必在bootstrap.min.js 之前引入 --> <script src="//cdn.bootcss.com/jquery/1.11.3/jquery.min.js"></script> <!-- 最新的 Bootstrap 核心 JavaScript 文件 --> <script src="//cdn.bootcss.com/bootstrap/3.3.5/js/bootstrap.min.js"></script> </head> <body> <div class="row bg-primary"> <div class="col-sm-1 col-xs-1"></div> <div class="col-sm-11 col-xs-11"><h1><a href="" style="text-decoration: none;color: white;">MyWebSite</a></h1></div> </div> <div class="row jumbotron"> <div class="col-md-1 col-xs-1"></div> <div class="col-md-10 col-xs-10"><h1>Welcome to MyWebSite!</h1></div> <div class="col-md-1 col-xs-1"></div> </div> </body> </html>
2、修改路由
在文件app/config/routing.yml添加如下内容
blog_list: path: /bloglist/ defaults: { _controller: AppBundle:Blog:list }
说明:
定义了网站不同的url路径所对应的controller
blog_list:表配置组名字
path:url路径
defaults:响应的controller
这里设置的是执行AppBundler下的BlogController的listAction方法
3、修改控制器
创建src/AppBundle/Controller/BlogController.php文件
<?php namespace AppBundle\Controller; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Symfony\Component\HttpFoundation\Request; class BlogController extends Controller { public function listAction(Request $request) { return $this->render('blog/list.html.twig'); } }
说明:
render: 显示/渲染/输出,blog/list.html.twig这个模板的内容
4、访问测试
http://127.0.0.1:8080/app_dev.php/bloglist/