Php 需要Symfony 2.7创建第一页的帮助吗
我正在努力学习Symfony框架并与之斗争。说明不是很有用,或者假设我知道的比我知道的多得多。我只是尝试创建一个具有适当路由和控制器的网页。我一直在谷歌上寻找答案,并取得了一些进展,但还没有运气。现在我只安装了Symfony的标准版本和默认包等。我创建了一个名为“gtest3”的项目,并选择了PHP 我不确定我把新路线放在哪里(什么文件),或者可能需要放在多个文件中 我找到了“routing.yml”文件,这似乎就是我需要放它的地方 下面是目前的情况:Php 需要Symfony 2.7创建第一页的帮助吗,php,symfony,Php,Symfony,我正在努力学习Symfony框架并与之斗争。说明不是很有用,或者假设我知道的比我知道的多得多。我只是尝试创建一个具有适当路由和控制器的网页。我一直在谷歌上寻找答案,并取得了一些进展,但还没有运气。现在我只安装了Symfony的标准版本和默认包等。我创建了一个名为“gtest3”的项目,并选择了PHP 我不确定我把新路线放在哪里(什么文件),或者可能需要放在多个文件中 我找到了“routing.yml”文件,这似乎就是我需要放它的地方 下面是目前的情况: gtest3: resource:
gtest3:
resource: "@gtest3Bundle/Resources/config/routing.php"
prefix: /
app:
resource: "@AppBundle/Controller/"
type: annotation
我猜我需要添加一些东西,并把控制器的位置/文件名?我尝试过几种方法,但都会出错
还有上面代码中引用的“routing.php”文件。我不确定这是“控制器”还是“路线”的附加部分。以下是该文件中的代码:
use Symfony\Component\Routing\RouteCollection;
use Symfony\Component\Routing\Route;
$collection = new RouteCollection();
$collection->add('gtest3_homepage', new Route('/hello/{name}', array(
'_controller' => 'gtest3Bundle:Default:index',
)));
return $collection;
我不知道如果我在这里补充什么。
最后,还有我找到的“DefaultConroller.php”文件,它可能也是控制器。我想我不需要在这里包含该文件的代码
所以-我所要做的就是创建一个“/gman”路由,然后让控制器在页面上回显一些内容。超基本的东西。我不知道该怎么做
有人能帮忙吗?非常感谢…要配置路由,您可以使用yml、php或xml文件。您可以在app/config/config.yml中指定它
framework:
router:
resource: "%kernel.root_dir%/config/routing.yml"
在这里,您可以检查现在使用的文件。有一些方法可以存储路由
app:
resource: "@AppBundle/Controller/"
type: annotation
这就是通过在控制器类中的操作(例如索引操作)上方编写注释来使用路由的方式
另一种常见的方法是在每个包中构建一个或多个.yml文件。
在app/config/routing.yml中,您应该编写以下内容:
app:
resource: "@AppBundle/Resources/config/routing.yml"
prefix: /
然后,您需要创建文件(以及必要的目录)src/AppBundle/Resources/config/routing.yml并添加以下内容:
app_homepage:
path: /
defaults: { _controller: AppBundle:Default:index }
然后,它将尝试查找DefaultController并在AppBundle(src/AppBundle/Controller/DefaultController.php)中激发indexAction
要调试路由,只需从项目目录键入控制台:
app/console router:debug
您可以用三种方式定义路由,可以使用yml文件、xml文件,也可以使用php文件。这是 从
routing.yml
的外观来看,您正在尝试设置php版本。我不建议这样做,而是使用配置而不是编码路由
注释示例如下所示:
添加控制器:
namespace Gtest3Bundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
class Gtest3Bundle extends Controller
{
/**
* @Route("/hello/{name}")
* @Template()
*/
public function indexAction($name)
{
return array('name' => $name);
}
}
并添加到你的app/config/routing.yml
:
gtest3:
resource: "@Gtest3Rights/Controller/"
type: annotation
prefix: /what-ever-you-want
您可以使用以下命令检查您定义的路由类型:
./app/console router:debug
如果它没有出现,则表示您有配置错误的内容
请注意,您的捆绑包名称违反了在symfony2上下文中如何命名捆绑包的约定
建议使用NamespaceProjectBundle
。这也记录在案。如果卡滞,请通过/app/console生成:bundle
。通过这种方式,您可以创建一个完整的symfony2结构,该结构将显示默认页面hello/foo页面
如果它看起来根本没有运行,请确保您已在
registerBundles()
方法中的app/AppKernel.php
文件中的中注册了捆绑包。您遵循哪些说明?Symfony的文档通常相当全面。这是要提交的文档。你看到这个了吗?另外,您是如何创建捆绑包的?symfony控制台通过app/console-generate:bundle
简化了这一过程。这将创建一个项目包,并添加所有配置、路由、更新AppKernel等。感谢Darragh,但这些是我试图遵循的说明;它没有确切地说明如何对路线进行编码以及它应该在什么文件中等。它确实给出了控制器的示例代码;如果它应该在它自己的文件中,或者如果您将它添加到另一个文件中;还有它的位置等等。顺便问一下,这是您的routing.yml
文件中的实际缩进吗?您在默认安装中有AppBundle,您可以看到控制器在哪里(文件夹名称不能更具体)以及它的外观。您发布的路由文件显示了一种注释类型。所以你的路线信息实际上进入了你的控制器。Symfony的一个更令人困惑的方面是,有很多方法可以做同样的事情。继续阅读“创建您的第一页”链接。最终它可能开始有意义了。你好,马尼奥拉:谢谢你的帮助。我确实检查了那个文件,它看起来像是在使用“routing.yml”文件,就像你布置的那样。所以:我想我需要将我的路由添加到该文件中,而不在“routing.php”中添加任何内容?感谢maniora-我成功地创建了一个页面;还有很多其他的事情要解决,所以我们会处理这些…@gman_donster请不要使用评论部分发布感谢。你已经这样做了,通过向上投票并接受一个答案:)你对你的问题的评论也是如此,你将重新解释这个问题。评论太多,无法为问题/答案提供反馈并要求澄清。感谢大家的帮助;取得了一些进展,但还没有赢家;今晚我需要停下来,但明天再回来,因为这对我来说非常重要。最棒的是,我成功地创建了一个页面;还有很多其他事情要解决,所以我们会继续努力…感谢大家的帮助;取得了一些进展,但还没有赢家;今晚我需要停下来,但明天再回来,因为这对我来说非常重要。最棒的是,我成功地创建了一个页面;还有很多事情要解决,所以我们会继续努力。。。