我学Symfony 2.8
很难。
我创建了一个bundle
名为BlogBudle
,并在其中创建了一个controller
名为HomeController
。
我的目标是:创建/test
URL
并将其分配给home page url
/var/www/symfony/app/config/routing.yml
blog:
resource: "@BlogBundle/Controller/"
type: annotation
prefix: /
app:
resource: "@AppBundle/Controller/"
type: annotation
/var/www/symfony/src/BlogBundle/控制器/HomeController.php
namespace BlogBundle'Controller;
use Symfony'Bundle'FrameworkBundle'Controller'Controller;
use Sensio'Bundle'FrameworkExtraBundle'Configuration'Route;
class HomeController extends Controller
{
/**
* @Route("/test")
*/
public function indexAction()
{
return $this->render('BlogBundle:Default:index.html.twig');
}
}
当我运行php app/console debug:router
时,它显示
名称方法方案主机路径
blog_home_index ANY ANY ANY/test
问题:如果我访问http://www.example.com/test
,显示404
错误。
下面是我的VH配置:
<VirtualHost *:80>
#ServerAdmin admin@test.com
ServerName mysmfony.com
ServerAlias www.mysymfony.com
DocumentRoot /var/www/symfony/web
DirectoryIndex app_dev.php
<Directory /var/www/symfony/web>
AllowOverride All
Options All
</Directory>
ErrorLog ${APACHE_LOG_DIR}/mysymfony.com.log
CustomLog ${APACHE_LOG_DIR}/mysymfony.com.log combined
</VirtualHost>
需要在app/config/routing中覆盖你的bundle路由。yml例如:
user_test:
resource: "@BlogBundle/Resources/config/routing.yml"
prefix: /
和
这是重定向到您的主页的路由
BlogBundle/资源/config/routing.yml
any_unique_route_name:
pattern: /test
defaults: { _controller: BlogBundle:Home:index }
下面是一个例子:
路由。yml
my_route_name:
path: /test
defaults:
_controller: NamespaceBlogBundle:Home:index
如果你的控制器名为HomeController那么渲染应该是这样的
public function indexAction()
{
return $this->render('NamespaceBlogBundle:Home:index.html.twig');
}
Symfony路由文档