첫 번째 Symfony 페이지 만들기


새 페이지 만들기(HTML 또는 JSON 출력 여부)는 간단한 "2단계" 작업입니다.

  1. 경로 만들기 : 경로는 사용자를 가리키는 경로입니다. 페이지 URL(예: /about/about),同时映射到一个控制器。

  2. 创建一个控制器:控制器(controller)是你为了构造页面而写的功能。你要拿到发送来的请求请求信息,用它创建一个Symfony的Response对象,令其包含HTML内容,JSON字符串或是其他

如同在网上每一次互动都是从HTTP请求开始,你的任务单纯而简单:理解请求,返回回复。

创建一个页面:路由和控制器 

在开始之前,确保你已经阅读了安装和配置Symfony章节,同时已经可以访问浏览器中的Symfony程序。

假设你要新建一个/lucky/number页面,用于生成一个随机的幸运数字并且输出它。那么,要先创建一个类并添加方法,用于在某人访问/lucky/number时被执行:

// src/AppBundle/Controller/LuckyController.phpnamespace AppBundle\Controller; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;use Symfony\Component\HttpFoundation\Response; class LuckyController{
    /**
     * @Route("/lucky/number")
     */
    public function numberAction()
    {
        $number = rand(0, 100);         return new Response(
            '<html><body>Lucky number: '.$number.'</body></html>'
        );
    }}


在开始之前测试一下

http:// localhost:8000 / lucky / number

如果你在Apache或Nginx上正确设置了虚拟主机,就可以把http://localhost:8000部分替换为你自己的主机名,比如http://symfony.dev/app_dev.php/lucky/number)은 동시에 컨트롤러에 매핑됩니다.

🎜🎜 컨트롤러 만들기 🎜🎜🎜🎜🎜: 컨트롤러는 페이지를 구성하기 위해 작성하는 함수입니다. 전송된 요청 요청 정보를 가져와 이를 사용하여 HTML 콘텐츠, JSON 문자열 또는 기타 🎜🎜🎜 🎜을 포함하는 Symfony 🎜🎜Response🎜🎜 개체를 생성해야 합니다. 🎜🎜 인터넷의 모든 상호 작용이 HTTP 요청으로 시작되는 것처럼 작업은 순수하고 간단합니다. 요청을 이해하고 응답을 반환하는 것입니다. 🎜🎜🎜

🎜🎜페이지 만들기: 경로 및 컨트롤러 🎜🎜🎜🎜¶🎜🎜

< div class="admonition-wrapper" id="">
🎜🎜🎜시작하기 전에 🎜🎜🎜🎜Symfony 설치 및 구성🎜🎜🎜🎜 장을 읽어보세요. , 브라우저에서 이미 Symfony 프로그램에 액세스할 수 있습니다. 🎜🎜🎜🎜🎜🎜🎜🎜 새로운 🎜🎜/lucky/number🎜🎜 페이지를 생성하여 임의의 행운의 숫자를 생성하고 출력한다고 가정해 보겠습니다. 따라서 먼저 클래스를 만들고 누군가가 🎜🎜/lucky/number🎜🎜를 방문할 때 실행될 메서드를 추가하세요. 🎜🎜🎜
  // src/AppBundle/Controller/LuckyController.php // ...class LuckyController{
    // ...     /**
     * @Route("/api/lucky/number")
     */
    public function apiNumberAction()
    {
        $data = array(
            'lucky_number' => rand(0, 100),
        );         return new Response(
            json_encode($data),
            200,
            array('Content-Type' => 'application/json')
        );
    }}
🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜 먼저 테스트해 보세요. 시작 🎜🎜🎜
🎜🎜🎜http://localhost:8000/lucky/number🎜🎜🎜
🎜🎜🎜🎜🎜🎜🎜Apache 또는 Nginx🎜🎜🎜🎜에서 가상 호스트를 올바르게 설정한 경우 🎜🎜http://localhost:8000를 입력할 수 있습니다. 🎜 부분은 🎜🎜http://symfony.dev/app_dev.php/lucky/number🎜🎜와 같은 자신만의 호스트 이름으로 구성됩니다. 🎜🎜🎜🎜🎜

행운의 숫자가 출력된다면 축하드립니다! 하지만 로또를 하기 전에 먼저 그것이 어떻게 작동하는지 이해해야 합니다. ㅋㅋㅋ , URL 일치를 정의합니다. YAML(또는 다른 형식)로 경로를 작성할 수도 있습니다.

numberAction上面@Route被称为注释,它定义了URL匹配。你也可以在YAML(或其他格式)里写路由:请参考路由章节。实际上,文档中的多数路由例程都有“标签”,以显示每种格式的配置

注释下面的方法 - numberAction- 被称为控制器,这是你控制页面的地方。这个唯一的原则是:一个控制器必须返回一个Symfony的响应对象(你最终将学习到活用这个原则)。

创建一个JSON响应 

在控制器中返回的Response对象可以包含HTML,JSON甚至二进制文件比如图片或PDF。你可以轻松设置HTTP头信息或HTTP状态码。

假设你要创建一个JSON返回值,则只需要LuckyController再添加一个方法:

// src/AppBundle/Controller/LuckyController.php // ...// --> don't forget this new use statement 别忘了这行新的use声明use Symfony\Component\HttpFoundation\JsonResponse; class LuckyController{
    // ...     /**
     * @Route("/api/lucky/number")
     */
    public function apiNumberAction()
    {
        $data = array(
            'lucky_number' => rand(0, 100),
        );         // calls json_encode and sets the Content-Type header
        // 自动调用json_encode并设置Content-Type头
        return new JsonResponse($data);
    }}

   

在浏览器中测一下

http:// localhost:8000 / api / lucky / number

你更可将代码精简为超好用的JsonResponse

注释:// src/AppBundle/Controller/LuckyController.php // ...class LuckyController{
    /**
     * @Route("/lucky/number/{count}")
     */
    public function numberAction()
    {
        // ...
    }     // ...}


动态URL匹配:/ lucky / number / {count} 

窝,你做得不错但Symfony的路由还可以做得更多假设你希望用户可以到/lucky/number/5来立即生成幸运数字5,更新路由,在使其拥有尾部一个{wildcard}routing

장을 참조하세요. 실제로 문서에 있는 대부분의 라우팅 루틴에는 각 형식의 구성을 표시하는 "레이블"이 있습니다. 🎜🎜🎜🎜🎜🎜 아래 메서드를 주석 처리하세요. 🎜🎜numberAction🎜🎜-은 Controller라고 합니다. 페이지를 제어하는 ​​곳입니다. 유일한 원칙은 다음과 같습니다. 컨트롤러 🎜🎜🎜🎜는 반드시 🎜🎜🎜🎜 Symfony 🎜🎜🎜🎜 응답 🎜🎜🎜🎜 개체를 반환해야 합니다(결국 이 원칙을 사용하는 방법을 배우게 됩니다). 🎜🎜🎜

🎜🎜 JSON 응답 만들기 🎜🎜🎜🎜¶🎜🎜

🎜🎜🎜컨트롤러에서 반환된 🎜🎜Response🎜🎜 개체에는 HTML, JSON이 포함될 수 있습니다. 이미지나 PDF와 같은 바이너리 파일. HTTP 헤더나 HTTP 상태 코드를 쉽게 설정할 수 있습니다. 🎜🎜🎜🎜🎜🎜 JSON 반환 값을 생성하려는 경우 🎜🎜LuckyController🎜🎜다른 메서드 추가: 🎜🎜🎜
YAML:# app/config/routing.ymllucky_number:
    path:     /lucky/number/{count}
    defaults: { _controller: AppBundle:Lucky:number }
🎜
🎜🎜🎜🎜찾아보기만 하면 됩니다. 기기에서 테스트해 보세요🎜🎜🎜
🎜🎜🎜http://localhost:8000/api/lucky/number🎜🎜🎜
🎜🎜🎜코드를 사용하기 매우 쉽게 간소화할 수도 있습니다🎜 🎜< code>JsonResponse🎜🎜: 🎜🎜🎜
XML:<!-- app/config/routing.xml --><?xml version="1.0" encoding="UTF-8" ?><routes xmlns="http://symfony.com/schema/routing"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xsi:schemaLocation="http://symfony.com/schema/routing        http://symfony.com/schema/routing/routing-1.0.xsd">     <route id="lucky_number" path="/lucky/number/{count}">
        <default key="_controller">AppBundle:Lucky:number</default>
    </route></routes>
🎜🎜🎜🎜🎜
🎜

🎜🎜동적 URL 일치: /lucky/number/{count} 🎜🎜🎜🎜¶🎜🎜

🎜🎜🎜nest, 잘 하셨습니다. 하지만 Symfony의 라우팅은 더 많은 일을 할 수 있습니다. 사용자가 🎜🎜할 수 있어요! 🎜🎜/lucky/number/5🎜🎜 행운의 숫자 5를 즉시 생성하고 경로를 업데이트하고 🎜🎜{wildcard}🎜🎜와일드카드를 갖도록 설정하세요. 🎜 🎜🎜
PHP:// app/config/routing.phpuse Symfony\Component\Routing\RouteCollection;use Symfony\Component\Routing\Route; $collection = new RouteCollection();$collection->add('lucky_number', new Route('/lucky/number/{count}', array(
    '_controller' => 'AppBundle:Lucky:number',))); return $collection;
// src/AppBundle/Controller/LuckyController.php// ... class LuckyController{     /**
     * @Route("/lucky/number/{count}")
     */
    public function numberAction($count)
    {
        $numbers = array();
        for ($i = 0; $i < $count; $i++) {
            $numbers[] = rand(0, 100);
        }
        $numbersList = implode(', ', $numbers);         return new Response(
            '<html><body>Lucky numbers: '.$numbersList.'</body></html>'
        );
    }     // ...}
// src/AppBundle/Controller/LuckyController.php  
// ...
// --> add this new use statement
use Symfony\Bundle\FrameworkBundle\Controller\Controller; 
class LuckyController extends Controller
{    // ...}
// src/AppBundle/Controller/LuckyController.php // ...class LuckyController extends Controller{
    /**
     * @Route("/lucky/number/{count}")
     */
    public function numberAction($count)
    {
        // ...
        $numbersList = implode(', ', $numbers);         $html = $this->container->get('templating')->render(
            'lucky/number.html.twig',
            array('luckyNumberList' => $numbersList)
        );         return new Response($html);
    }     // ...}

{count}{count}占位符,页面URL变得不一样了。现在它要求URL匹配/lucky/number/*,比如/lucky/number/5。这样一来你可以在控制器中收到并使用这个值:

// src/AppBundle/Controller/LuckyController.php // .../**
 * @Route("/lucky/number/{count}")
 */public function numberAction($count){
    // ...     /*
    $html = $this->container->get('templating')->render(
        'lucky/number.html.twig',
        array('luckyNumberList' => $numbersList)
    );
 
    return new Response($html);
    */     // render: a shortcut that does the same as above 快捷方法
    return $this->render(
        'lucky/number.html.twig',
        array('luckyNumberList' => $numbersList)
        );
  }

/lucky/number/xx测试一下,把xx换为任意数字:

http:// localhost:8000 / api / lucky / number / 7

你应该看到幸运数字7被输出!在控制器中增加一个$placeholder参数,你就可以得到路由中任何一个{placeholder}占位符的值只要确保它们的名字相同即可。

系统-路由还可以做更多,像是支持多个占位符(比如/blog/{category}/{page}),令占位符可选以及强制占位符匹配一个正则表达式(比如{count}必须为数字)。

路线章节寻找更多,即可成为路由专家。

渲染模板(利用容器) 

如果你在控制器中返回HTML,你可能需要渲染模板。幸运的是,Symfony拥有Twig:一种易学的模板语言,强大却相当有趣。

目前,LuckyController没有继承任何基类。此时引用Twig(或其他Symfony工具)最简单的方式,就是继承Symfony的Controller 자리 표시자로 인해 페이지 URL이

다르게

됩니다. 이제 URL이 /lucky/number/5처럼
/lucky/number/*

🎜와 일치해야 합니다. 이렇게 하면 컨트롤러에서 이 값을 받고 사용할 수 있습니다. 🎜🎜🎜
枝条:{# app/Resources/views/lucky/number.html.twig #}
     {% extends 'base.html.twig' %} 
     {% block body %} <h1>Lucky Numbers: {{ luckyNumberList }}</h1>
    {% endblock %}
🎜🎜🎜 🎜🎜/lucky/number/xx🎜🎜로 이동하여 테스트하고 xx를 🎜🎜 <로 바꾸세요. em>🎜🎜Any🎜🎜🎜🎜번호: 🎜🎜🎜🎜
🎜🎜🎜http://localhost:8000/api/lucky/number/7🎜🎜🎜
🎜🎜 🎜 행운의 숫자 7이 출력되는 것을 볼 수 있습니다! 컨트롤러에 🎜🎜$placeholder🎜🎜 매개변수를 추가하면 경로에 있는 모든 🎜🎜{placeholder}🎜🎜 자리 표시자의 값을 얻을 수 있는지 확인하세요. 이름만 같으면 됩니다. 🎜🎜🎜🎜🎜🎜시스템 라우팅도 🎜🎜🎜🎜 더 많은 🎜🎜🎜🎜을 수행할 수 있습니다(예: 🎜🎜/blog/{category }/{ 등). 페이지}🎜🎜), 자리 표시자를 선택 사항으로 만들고 자리 표시자가 정규식 🎜🎜(예: 🎜🎜{count}🎜🎜 필수 🎜🎜🎜🎜 숫자여야 합니다). 🎜🎜🎜🎜🎜🎜라우팅 전문가가 되려면 🎜🎜🎜🎜Routes🎜🎜🎜🎜 장에서 자세한 내용을 알아보세요. 🎜🎜🎜

🎜🎜템플릿 렌더링(컨테이너 활용) 🎜🎜🎜🎜¶🎜🎜

🎜🎜🎜컨트롤러에서 HTML을 반환하는 경우 템플릿을 렌더링해야 할 수도 있습니다. 다행스럽게도 Symfony에는 강력하면서도 꽤 재미있는 배우기 쉬운 템플릿 언어인 Twig가 있습니다. 🎜🎜🎜🎜🎜🎜현재 🎜🎜LuckyController🎜🎜는 기본 클래스를 상속하지 않습니다. 현재 Twig(또는 다른 Symfony 도구)를 참조하는 가장 쉬운 방법은 Symfony의 🎜🎜Controller🎜🎜 기본 클래스를 상속하는 것입니다: 🎜🎜🎜
PHP:<!-- app/Resources/views/lucky/number.html.php -->
<?php $view->extend('base.html.php') ?> 
<?php $view['slots']->start('body') ?>   
 <h1>Lucky Numbers: 
<?php echo $view->escape($luckyNumberList) ?>
<?php $view['slots']->stop() ?>
🎜🎜🎜템플릿 서비스 사용 🎜🎜🎜🎜¶ 🎜 🎜🎜🎜

이것들은 아무것도 바꾸지 않지만 Symfony의 Container/Container# 🎜🎜 #: 이것은 시스템 수준에서 추출할 수 있는 배열과 유사한 객체입니다. 유용한 개체 이러한 유용한 개체를 Service# 🎜🎜##🎜이라고 합니다. 🎜#(서비스): Symfony는 특히 템플릿 렌더링을 위한 서비스 객체, 로깅을 위한 서비스 객체 등을 제공합니다. Twig 템플릿을 렌더링하려면 필수 서비스 이름은 템플릿

YAML:# app/config/config.yml # ...framework:
    secret: '%secret%'
    router:
    resource: '%kernel.root_dir%/config/routing.yml'
    # ...twig:
    debug:            '%kernel.debug%'
    strict_variables: '%kernel.debug%' # ...
templating

XML:<!-- app/config/config.xml --><?xml version="1.0" encoding="UTF-8" ?><container xmlns="http://symfony.com/schema/dic/services"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xmlns:framework="http://symfony.com/schema/dic/symfony"    xmlns:twig="http://symfony.com/schema/dic/twig"    xsi:schemaLocation="http://symfony.com/schema/dic/services        http://symfony.com/schema/dic/services/services-1.0.xsd        http://symfony.com/schema/dic/symfony        http://symfony.com/schema/dic/symfony/symfony-1.0.xsd        http://symfony.com/schema/dic/twig        http://symfony.com/schema/dic/twig/twig-1.0.xsd">     <!-- ... -->     <framework:config secret="%secret%">
        <framework:router resource="%kernel.root_dir%/config/routing.xml" />
        <!-- ... -->
    </framework:config>     <!-- Twig Configuration -->
    <twig:config debug="%kernel.debug%" strict-variables="%kernel.debug%" />     <!-- ... --></container>


“服务容器”十分重要,学习过程中你会掌握大量相关知识。现在,你只需了解它拥有很多对象,然后你可以通过“昵称”(比如templatinglogger)利用get()来得到其中的任何一个。templating服务,是TwigEngine的实例,里面有个render()方法。

但是还可以再简单些!通过继承Controller基类,你可以使用很多快捷方法,比如render()
#🎜🎜 # "서비스 컨테이너"는 매우 중요하며 학습 과정에서 많은 관련 지식을 습득하게 됩니다

. 지금은 여기에 많은 개체가 포함되어 있다는 점만 이해하고 "별명"으로 개체를 전달할 수 있습니다(예:

템플릿
#🎜 🎜# 또는
# 🎜🎜#logger

) get()#🎜🎜을 사용하세요. # 그중 하나를 얻으려면. 템플릿 서비스는 TwigEngine#🎜입니다. 🎜#의 인스턴스에는

render()
메서드가 있습니다. #🎜🎜##🎜🎜##🎜🎜##🎜🎜##🎜🎜##🎜🎜#하지만 더 간단할 수도 있습니다! #🎜🎜##🎜🎜#Controller#🎜🎜##🎜🎜# 기본 클래스를 상속하면 #🎜🎜##🎜🎜#와 같은 다양한 바로가기 메서드를 사용할 수 있습니다. render( )#🎜🎜##🎜🎜#:#🎜🎜##🎜🎜##🎜🎜#
PHP:// app/config/config.php// ... $container->loadFromExtension('framework', array(
    'secret' => '%secret%',
    'router' => array(
        'resource' => '%kernel.root_dir%/config/routing.php',
    ),
    // ...)); // Twig Configuration$container->loadFromExtension('twig', array(
    'debug'            => '%kernel.debug%',
    'strict_variables' => '%kernel.debug%',)); // ...
#🎜🎜#컨트롤러의 바로 가기 메서드가 작동하는 방식은 컨트롤러 장을 참조하세요. #🎜🎜##🎜🎜##🎜🎜##🎜🎜##🎜🎜##🎜🎜#고급 사용자는 #🎜🎜##🎜🎜##🎜🎜##🎜🎜#컨트롤러 정의 방법을 참조하세요. 서비스로#🎜🎜##🎜🎜##🎜🎜##🎜🎜#. #🎜🎜##🎜🎜##🎜🎜##🎜🎜##🎜🎜##########생성 템플릿 생성### ## ## ## #####¶###### ## 🎜 🎜 🎜 🎜# #

지금 페이지를 새로 고치면 다음 오류가 발생합니다. #🎜 🎜#"lucky/number.html.twig" 템플릿을 찾을 수 없습니다.

새 템플릿을 만들어 문제를 해결하세요. 하나의

app/Resources/views/lucky

디렉토리, 그리고 number.html. 나뭇가지 위치:

$  php bin/console config:dump-reference framework
rrree

트윅이 여러분을 환영합니다! 이 간단한 파일은 이미 기본 기능을 보여줍니다. {{variableName }}{{ variableName }}语法被用于打印一些东西。而luckyNumberList这个变量是你在控制器中的render()方法中将其传递进来。

% extends 'base.html.twig' %对应的是一个布局文件,它们位于app / Resources / views / base.html.twig,这个文件随Symfony项目的建立而存在。它相当地单纯(只是一个未经样式处理的HTML结构),供你定制。{% block body %}部分则是使用了嫩枝模板的继承系统/继承系统,将来的其间置于内容父模板base.html.twig布局中的相应位置。

立即刷新页面

http:// localhost:8000 / lucky / number / 9

如果你查看页面源代码,你会看到完整的HTML骨架,多亏了base.html.twig

这只是Twig威力的极小部分。若你希望精通Twig的语法,数组循环,输出其他模板乃至更多超酷功能,应该参阅创建并使用模板

浏览整个项目 

你已经创建了一个弹性的URL,渲染了一个“使用了继承功能”的模板,并且输出了JSON响应。

是时候浏览你的项目中的文件并且去掉它们的神秘光环了。之前你已经在两个极为重要的文件夹中进行作业:

app/

内容配置文件和模板。大体上,只要不是 PHP代码的材料都放在这里。


src/

과 같은 구문은 무언가를 인쇄하는 데 사용됩니다. 그리고 #🎜🎜##🎜🎜#luckyNumberList#🎜🎜##🎜🎜#이 변수는 #🎜🎜##🎜🎜#render() #🎜🎜##🎜🎜# 방법. #🎜🎜##🎜🎜##🎜🎜##🎜🎜#% 확장 'base.html.twig' %#🎜🎜##🎜🎜#은 레이아웃 파일에 해당하며 위치는 다음과 같습니다. #🎜🎜##🎜🎜##🎜🎜##🎜🎜#app / Resources / views / base.html.twig#🎜🎜##🎜🎜##🎜🎜##🎜🎜#, 이 파일은 Symfony와 함께 제공됩니다. 존재하도록 설립된 프로젝트. #🎜🎜##🎜🎜##🎜🎜##🎜🎜# 꽤 #🎜🎜##🎜🎜##🎜🎜##🎜🎜#plain(스타일이 지정되지 않은 HTML 구조)입니다. 당신은 사용자 정의합니다. #🎜🎜##🎜🎜#{% block body %}#🎜🎜##🎜🎜# 부분은 나뭇가지 템플릿 #🎜🎜##🎜🎜##🎜🎜# #🎜🎜#을 사용합니다. 상속 시스템/상속 시스템#🎜🎜##🎜🎜##🎜🎜##🎜🎜#, 미래는 콘텐츠 상위 템플릿 #🎜🎜##🎜🎜#base.html.twig #🎜🎜##🎜🎜#레이아웃에서 해당 위치입니다. #🎜🎜##🎜🎜##🎜🎜##🎜🎜##🎜🎜##🎜🎜#지금 페이지 새로고침#🎜🎜##🎜🎜##🎜🎜#
#🎜🎜##🎜🎜 # #🎜🎜#http://localhost:8000/lucky/number/9#🎜🎜##🎜🎜##🎜🎜#
#🎜🎜##🎜🎜##🎜🎜# 페이지 소스 코드를 보면 #🎜🎜##🎜🎜#base.html.twig#🎜🎜##🎜🎜# 덕분에 완전한 HTML 뼈대를 볼 수 있습니다. #🎜🎜##🎜🎜##🎜🎜##🎜🎜##🎜🎜##🎜🎜#이것은 Twig의 힘 중 아주 작은 부분에 불과합니다. Twig의 구문, 배열 루프, 기타 템플릿 출력 및 더욱 멋진 기능을 익히고 싶다면 #🎜🎜##🎜🎜##🎜🎜##🎜🎜#템플릿 생성 및 사용#🎜🎜##🎜을 참조하세요. 🎜 ##🎜🎜##🎜🎜#. #🎜🎜##🎜🎜##🎜🎜#

#🎜🎜##🎜🎜#전체 프로젝트 보기 #🎜🎜##🎜🎜##🎜🎜##🎜🎜#¶#🎜🎜##🎜 🎜 #

#🎜🎜##🎜🎜##🎜🎜#유연한 URL을 생성하고 상속을 사용하여 템플릿을 렌더링하고 JSON 응답을 출력했습니다. 이제 프로젝트의 파일을 살펴보고 미스터리한 분위기를 제거할 때입니다. 이전에는 두 개의 매우 중요한 폴더에서 작업했습니다: #🎜🎜##🎜🎜##🎜🎜#
#🎜🎜#app/#🎜🎜#
#🎜🎜 ##🎜🎜##🎜🎜#콘텐츠 프로필 및 템플릿. 일반적으로 #🎜🎜##🎜🎜##🎜🎜##🎜🎜#이 #🎜🎜##🎜🎜##🎜🎜##🎜🎜#이 아닌 한, PHP 코드 자료 여기에 배치되어 있습니다. #🎜🎜##🎜🎜##🎜🎜#
#🎜🎜#src/#🎜🎜#

PHP 프로그램이 있는 곳은 99%의 시간 동안 src/(PHP 파일) 또는 app/(기타)에서 작업하게 됩니다. 기술 능력이 향상됨에 따라 각 폴더에서 무슨 일이 일어나고 있는지 알게 될 것입니다. src/(PHP文件)或app/(其他东东)之下。随着你的技术实力高大上起来,你会学习到每个文件夹下都发生了什么。

app/目录也存在其他内容,app/AppKernel.php像是,你要用它来开启新捆绑(它是app/下面很少的PHP文件之一)。

src/目录下暂时只有一个目录 - src/AppBundle- 所有的东西都在这里面。一个包,像一个“插件”,你可以找到开源捆绑,然后把它们安装到你的项目中,但就算是你自己的代码,也是处理束之中 - 典型的就是AppBundle(尽管这捆毫无特殊之处)。为了深入了解捆绑,以及为何你应该创建多个捆绑(提示:在项目之间共享代码),请参阅Bundle系统章节。

那么项目中的其他文件夹又是什么情况呢?

web/

它是整个项目的文档根目录,存在可公开访问的文件,比如CSS,图片以及用于执行应用程序(app_dev.phpapp.php)的Symfony的前端控制器(前端控制器)。


tests/

你程序的自动测试(如单元测试/单元测试)被存放在这里。


bin/

用于存放二进制(binary)文件。最重要的是console文件,它被用于控制中执行Symfony命令。


var/

这是那些自动生成的文件被存放的地方,比如缓存文件(var/cache/)和日志文件(var/logs/)。


vendor/

app/🎜🎜 디렉토리에는 🎜🎜app/AppKernel.php🎜🎜like라는 다른 콘텐츠도 있는데, 이를 사용하여 새 번들을 열 수 있습니다( 🎜 🎜app/🎜🎜아래 몇 안되는 PHP 파일 중 하나). 현재 🎜🎜🎜🎜src/🎜🎜 디렉터리 아래에는 단 하나의 디렉터리만 있습니다. - 🎜🎜src/AppBundle🎜🎜- 모든 것이 그 안에 있습니다. "플러그인"과 같은 패키지는 🎜🎜🎜🎜오픈 소스 번들🎜🎜🎜🎜을 찾아 프로젝트에 설치할 수 있지만 자신의 코드도 번들로 제공됩니다. 일반적으로 AppBundle(이 번들에는 특별한 것이 없지만) . 번들링에 대한 더 깊은 이해와 여러 번들을 만들어야 하는 이유(힌트: 프로젝트 간에 코드 공유)를 보려면 🎜🎜🎜🎜Bundle System🎜🎜🎜🎜 장을 참조하세요. 🎜🎜🎜🎜🎜🎜그럼 프로젝트의 다른 폴더는 어떻습니까? 🎜🎜🎜
🎜web/🎜🎜🎜🎜🎜전체 프로젝트의 문서 루트 디렉토리로, 애플리케이션 실행에 사용되는 CSS, 이미지, 파일 등 공개적으로 접근 가능한 파일이 위치합니다(🎜 🎜 app_dev.php🎜🎜 및 🎜🎜app.php🎜🎜)용 Symfony의 프런트엔드 컨트롤러(프런트엔드 컨트롤러). 🎜🎜🎜
🎜tests/🎜🎜🎜🎜🎜프로그램에 대한 자동화된 테스트(예: 단위 테스트/단위 테스트)가 여기에 저장됩니다. 🎜🎜🎜
🎜bin/🎜🎜🎜🎜🎜은 바이너리 파일을 저장하는 데 사용됩니다. 가장 중요한 것은 컨트롤에서 Symfony 명령을 실행하는 데 사용되는 🎜🎜console🎜🎜 파일입니다. 🎜🎜🎜
🎜var/🎜🎜🎜🎜🎜캐시 파일(🎜🎜var/cache/ 🎜🎜) 및 로그 파일(🎜🎜var/logs/🎜🎜). 🎜🎜🎜
🎜공급업체/🎜### ## ## ######종속성 관리자### ## ## #####작곡가### ## ## ## 🎜 🎜#, 타사 라이브러리, 패키지 및 번들은 여기에서 다운로드됩니다. 이 디렉토리에서는 어떤 것도 편집하면 안 됩니다. Symfony는 유연합니다. 필요한 경우 기본 디렉터리 구조를 재정의할 수 있습니다. 참조

Symfony의 기본값을 재정의하는 방법디렉터리 구조.

프로그램 수준 구성

Symfony에는 여러 내장 기본 번들이 있습니다(보려면 app/AppKernel.phpapp/AppKernel.php文件查看),你可以安装更多.bundles的主要配置文件是app/config/config.yml

rrreeerrreeerrreee

framework根键配置的是FrameworkBundle,twig根键配置的是TwigBundle,诸如此类.Symfony中的许多行为都可以被控制,只需改变配置文件的一些选项即可。要搞清原因,请阅读配置参考

或者,通过超好用的bin/console 파일 열기). 더 많은 .bundle을 설치할 수 있는 기본 구성 파일은 app/config/config.yml

입니다.

rrreeerrreeerrreeeframework루트 키 구성은 다음과 같습니다. FrameworkBundle, twig루트 키는 TwigBundle 등으로 구성됩니다. Symfony의 많은

동작을 제어할 수 있습니다. 구성에서 일부 옵션만 변경하면 됩니다. 파일. 이유를 알아보려면

구성 참조을 읽어보세요.

또는 매우 사용하기 쉬운

bin/console

명령을 사용하여 루트 키에서 제거된 전체 구성 템플릿을 가져옵니다. rrreee

  • Symfony 구성 시스템은 환경, 가져오기, 매개변수 등을 포함하여 매우 강력합니다. 이 모든 내용을 익히려면

    Configuration

  • 장을 참조하세요.

    다음 단계는?
축하합니다! 당신은 Symfony를 마스터하기 시작했으며 아름답고, 기능적이며, 빠르고, 유지 관리 가능한 프로그램을 구축하는 새로운 방법을 배우게 될 것입니다.

그래요, 인프라를 완전히 익히려면 다음 장을 숙지해야 합니다. ControllerRouting 템플릿 생성 및 활용

그럼 🎜🎜🎜🎜 중국어 책🎜🎜🎜🎜에서 🎜🎜🎜🎜service도 배워보세요🎜🎜🎜🎜 , 🎜🎜🎜🎜양식 시스템🎜🎜 🎜🎜, 🎜🎜🎜🎜Doctrine🎜🎜🎜🎜(데이터베이스를 쿼리해야 하는 경우) 등을 사용하세요! 🎜🎜🎜

도 있습니다 중국 요리법 책#🎜🎜 #, 해결을 위한 고급 "방법" 기사가 가득합니다. # 🎜🎜#질문. 모두 행복한 학습이 되길 바랍니다!