资讯专栏INFORMATION COLUMN

Symfony4中文文档: 创建你的第一个Symfony页面

AlanKeene / 2870人阅读

摘要:创建你的第一个页面创建一个新页面无论是页面还是端点分为两步创建一个路由路由是一个指向你的页面比如同时它映射到一个控制器创建一个控制器控制器是你为了构造页面而写的功能获取传入的请求信息并用它创建一个对象该对象可以包含内容字符串甚至是图像或

创建你的第一个Symfony页面

创建一个新页面 - 无论是HTML页面还是JSON端点 - 分为两步:

创建一个路由: 路由(route)是一个指向你的页面URL(比如/about), 同时它映射到一个控制器.

创建一个控制器: 控制器(controller)是你为了构造页面而写的功能. 获取传入的request请求信息并用它创建一个Symfony Response对象, 该对象可以包含HTML内容, JSON字符串甚至是图像或PDF等二进制文件.

创建一个页面: 路由和控制器
在开始之前, 请确保你已经阅读安装和配置Symfony章节, 并可以在浏览器中访问你的Symfony应用程序.

假设你要新建一个 /lucky/number 页面, 用于生成一个随机的幸运数字并且输出它. 为此,要先创建一个控制器类和控制器方法:

Lucky number: ".$number.""
        );
    }
}

现在, 你需要将此控制器功能与公共URL(例如: /lucky/number)相关联, 以便在用户访问此链接时执行 number() 方法. 通过在 config/routes.yaml 文件中创建路由来定义此关联:

# config/routes.yaml

# the "app_lucky_number" route name is not important yet
app_lucky_number:
    path: /lucky/number
    controller: AppControllerLuckyController::number

就这样, 如果你正在使用Symfony Web服务, 可以尝试访问下:

http://localhost:8000/lucky/number

如果你看到幸运号码被输出到浏览器, 那么恭喜! 但是在你开始玩彩票之前, 先要了解它是如何运行的. 还记得创建页面的两个步骤吗?

创建一个路由: 在 config/routes.yaml 文件中, 路由定义了URL到页面的映射和要调用的控制器. 在本章节中你将会了解有关路由的更多信息, 包括如何创建变量URL.

创建一个控制器: 这是一个构建并最终返回一个Response对象的功能, 在本章节中你将会了解有关控制器的更多信息, 包括如何返回JSON响应.

要更快的创建控制器, 可以让 Symfony 来生成:

$ php bin/console make:controller
Annotation 路由

除了YAML, Symfony 允许使用annotation来定义路由. 为此, 请安装annotation包:

$ composer require annotations

你可以直接在控制器上方添加路由:


就这样, 页面 - http://localhost/lucky/number 将像以前一样工作! Annotations 是配置路由的推荐方法.

使用 Symfony Flex 自动安装『食谱』

你可能没有注意到, 但当你运行 composer require annotations 时, 发生了两件特别的事情, 这要归功于一个名为Flex的强大的Componser插件.

首先, annotations 不是一个真正的包名: 它是Flex解析为 sensio/framework-extra-bundle 的别名.

其次, 此软件包被下载之后, Flex执行一个『食谱』, 这是一组自动指令, 告诉Symfony如何继承外部软件包. Flex『食谱』适用于许多软件包, 并且能够做很多事情, 例如增加配置文件, 创建目录, 更新.gitignore以及向.env文件添加新配置. Flex自动安装软件包, 以便于你能专注于编码.

你可以通过阅读 "Using Symfony Flex to Manage Symfony Applications"来了解有关Flex的更多信息. 但这不是必须的: 当你添加包时, Flex会在后台自动运行.

bin/console 命令

你的项目已经集成一个强大的调试工具: bin/console 命令. 尝试运行一下:

$ php bin/console

你应该可以看到一组命令列表, 可以为你提供调试信息, 帮助生成代码, 生成数据库迁移等. 当你安装更多软件包时, 你将看到更多命令.

要获取你的系统中所有路由列表, 可以使用 debug:router 命令:

php bin/console debug:router

你可以在最顶端看到你的 app_lucky_number 路由:

Name Method Scheme Host Path
app_lucky_apinumber ANY ANY ANY /lucky/number

你还将在 app_lucky_number 之后看到调试路由 - 更多信息将在下一节中介绍.

Web调试工具栏: Debugging Dream

Web Debug Toolbar 是Symfony的杀手级工具之一: 在开发过程中大量调试信息输出在页面底部,便于调试. 安装 symfony/profiler-pack 即可开箱即用.

安装好后, 页面底部会出现一个黑色工具条. 你将了解更多有关它所包含的所有信息, 并可自由尝试: 鼠标悬停或点击工具条上不同图标即可获取有关路由, 性能, 日志记录等信息.

渲染模板

如果要从控制器返回HTML, 则可能需要渲染模板. 幸好, Symfony带有Twig: 一个简单,强大并且非常有趣的模板语言.

确保 LuckyController 继承了Symfony的基础 AbstractController 类:

// src/Controller/LuckyController.php

// ...
+ use SymfonyBundleFrameworkBundleControllerAbstractController;

- class LuckyController
+ class LuckyController extends AbstractController
{
    // ...
}

现在, 使用简便的 render() 函数来渲染模板. 传递一个数字变量, 以便于你可以在Twig中使用它:

// src/Controller/LuckyController.php

// ...
class LuckyController extends AbstractController
{
    /**
     * @Route("/lucky/number")
     */
    public function number()
    {
        $number = random_int(0, 100);

        return $this->render("lucky/number.html.twig", [
            "number" => $number,
        ]);
    }
}

模板文件存在于 templates/ 目录中, 该目录是在安装Twig时自动创建的. 创建一个新目录 templates/lucky , 在新目录中创建模板文件 number.html.twig, 写入内容:

{# templates/lucky/number.html.twig #}

Your lucky number is {{ number }}

{{number}} 语法在Twig中用来打印变量. 刷新浏览器以获取新的幸运数字.

http://localhost:8000/lucky/number

现在你可能担心Web Debug工具去了哪里: 那是因为当前模板中没有 标签. 你可以自己添加body元素, 或者扩展 base.html.twig , 它包含所有默认的HTML元素.

在创建和使用模板章节中, 你将了解有关Twig的所有信息: 如何渲染, 渲染其他模板以及利用其强大的布局继承系统.

查看项目结构

好消息! 你已经在项目中最重要的目录中工作:

config/

配置路由, 服务和包

src/

所有PHP代码都在此处.

templates/

所有Twig模板文件都在此处.

大多数情况下, 你将在 src/, templates/config/ 中工作. 当你继续阅读时, 你将学习在每个目录中可以做些什么.

那么项目中的其他目录呢?

bin/

著名的 `bin/console` 文件存在于此 (以及其他不太重要的可执行文件).

var/

这里存储项目自动创建的文件, 如缓存文件 ( `var/cache/` ) 和 ( `var/log` ) .

vendor/

第三方 (即"vendor") 类库都在这里! 这些是通过Composer包管理器下载的.

public/

这是项目的文档根目录: 你可以在此目录放置任何可公开访问的文件.

当你安装新软件包时, 将在需要时自动创建新目录.

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/29704.html

相关文章

  • Symfony4中文文档: 安装和设置Symfony框架

    摘要:安装和设置框架要创建新的应用程序首先确保使用的是或更高版本并且已经安装如果未安装请首先在系统上全局安装如果你想使用虚拟机请查看通过运行以下命令来创建新项目这将创建一个新的目录下载所需的依赖,甚至生成你所需的基本目录和文件换句话说你的 安装和设置Symfony框架 要创建新的Symfony应用程序, 首先确保使用的是PHP7.1 或更高版本并且已经安装Componser. 如果未安装, ...

    jsummer 评论0 收藏0
  • Symfony4中文文档: 路由

    摘要:路由漂亮的是任何严谨的应用程序所必须的这意味着像这样丑陋的要被所取代具有灵活性更加重要如果你需要将更改为需要做些什么你需要搜索并更新多少链接才能做出这种改动如果你使用的是的路由更改将是很简单的创建路由路由是从到控制器的映射假如你想要一个 路由 漂亮的URL是任何严谨的Web应用程序所必须的. 这意味着像 index.php?article_id=57 这样丑陋的URL要被 /read/...

    everfight 评论0 收藏0
  • [译]第三章 安装和设置symfony(未完)

    摘要:安装安装器创建新应用的唯一推荐方式就是使用安装器。安装器是安装在你的系统里的一个应用程序。安装器需要及以上版本。如果您仍使用老旧的版本,你将不能使用安装器。 原文链接 本章的目标是教导你建立一个运行在Symfony之上的应用程序。为了简化创建新应用的步骤,Symfony提供了一个安装程序。 安装Symfony安装器 创建新应用的唯一推荐方式就是使用Symfony Installer(S...

    dcr309duan 评论0 收藏0
  • 转:从框架看PHP的五种境界及各自的薪资待遇

    摘要:语言行为及特征状态看不懂任何英语技术,英语文档,凡事没有培训部在搞的,只有英文文档的东西国内一律没大公司在用,都非主流,排斥英文文档和新技术,以及各种超出他学习能力范围的技术。 在撰写此文前首先必须申明的是本人不鄙视任何一种框架,也无意于挑起PHP框架间的战争,更没有贬低某个框架使用者的用意,本文纯粹个人的看法。你可以认为我无知也好,或者装逼也好,请不要试着在任何情况下,随便发起言语的...

    Godtoy 评论0 收藏0
  • Linux 安装 Symfony2.8

    摘要:环境说明操作系统安装准备均使用安装至少要有个的环境是少不了了安装步骤下载官方命令工具创建项目这里执行项目创建时,会从官网下载源码包,执行完后就能在当前目录看到了这里我创建了一个新的项目叫,最后的不是项目名字中的是要下载指定的版本的源 环境说明 操作系统 tony@ubuntu:~$ lsb_release -a No LSB modules are available. Distrib...

    Yang_River 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<