Buat halaman Symfony pertama anda
Mencipta halaman baharu - sama ada HTML atau output JSON - ialah operasi "dua langkah" mudah:
- #🎜🎜 ## 🎜🎜#
Buat laluan : Laluan ialah URL halaman yang menghala kepada anda (seperti #🎜 🎜#
/tentang), sambil memetakan ke pengawal. /about
),同时映射到一个控制器。 创建一个控制器:控制器(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
#🎜🎜##🎜🎜# Cipta halaman: laluan dan pengawal #🎜🎜##🎜🎜##🎜🎜##🎜🎜#¶#🎜🎜##🎜🎜#
// 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') ); }}#🎜🎜 ## 🎜🎜 ## 🎜🎜 ## 🎜🎜 ## 🎜🎜 ## 🎜🎜 ## 🎜🎜 ## 🎜🎜 ## 🎜🎜 ## 🎜🎜#TestitBeforeyoustart#🎜 🎜##🎜🎜##🎜🎜#
#🎜🎜##🎜🎜##🎜🎜#http://localhost:8000/lucky/number#🎜🎜##🎜 🎜🎜 🎜##🎜 blockquote>#🎜🎜##🎜🎜##🎜🎜#Jika anda #🎜🎜##🎜🎜# #🎜🎜##🎜🎜#Apache atau Nginx#🎜🎜##🎜🎜##🎜🎜##🎜🎜# Selepas menyediakan hos maya dengan betul, anda boleh meletakkan #🎜🎜## Gantikan 🎜🎜#http://localhost:8000#🎜🎜##🎜🎜# dengan nama hos anda sendiri, seperti #🎜🎜##🎜🎜# http:// symfony.dev/app_dev.php/ bertuah/nombor#🎜🎜##🎜🎜#. #🎜🎜##🎜🎜##🎜🎜##🎜🎜##🎜🎜# Jika anda melihat nombor bertuah dikeluarkan, maka tahniah! Tetapi sebelum anda bermain lotto, anda perlu terlebih dahulu memahami cara ia berfungsi.
numberAction 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的路由还可以做得更多假设你希望用户可以到!
di atas 🎜🎜 dipanggil 🎜🎜🎜🎜🎜 🎜🎜, yang mentakrifkan padanan URL. Anda juga boleh menulis laluan dalam YAML (atau format lain): sila rujuk bab 🎜🎜🎜🎜routing🎜🎜🎜🎜. Malah, kebanyakan rutin penghalaan dalam dokumentasi mempunyai "label" untuk menunjukkan konfigurasi bagi setiap format 🎜🎜🎜🎜🎜🎜 Komen kaedah di bawah - 🎜🎜/lucky/number/5
来立即生成幸运数字5,更新路由,在使其拥有尾部一个{wildcard}
The@Route numberAction🎜🎜- dipanggil Pengawal, ini ialah tempat anda mengawal halaman. Satu-satunya prinsip ialah ini: pengawal 🎜🎜🎜🎜 MESTI 🎜🎜🎜🎜 kembalikan Symfony 🎜🎜🎜🎜 respons 🎜🎜🎜🎜 akhirnya belajar menggunakan prinsip ini (anda akan). . fail binari seperti imej atau PDF. Anda boleh menetapkan maklumat pengepala HTTP atau kod status HTTP dengan mudah. 🎜🎜🎜🎜🎜🎜 Dengan mengandaikan anda ingin mencipta nilai pulangan JSON, anda hanya perlu 🎜🎜 LuckyController🎜🎜Tambah kaedah lain: 🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜 Ujinya dalam peranti🎜🎜🎜 🎜🎜🎜http://localhost:8000/api/lucky/number🎜🎜🎜🎜🎜🎜Anda juga boleh menyelaraskan kod menjadi sesuatu yang sangat mudah untuk digunakan🎜 . #catalog2 " class="headerlink" id="catalog2">🎜🎜¶🎜🎜🎜🎜🎜nest, anda telah melakukan kerja yang baik tetapi penghalaan Symfony boleh melakukan lebih banyak lagi. Katakan anda mahu pengguna menjadi boleh ke 🎜🎜! 🎜🎜/lucky/number/5🎜🎜 untuk segera menjana nombor bertuah 5, mengemas kini laluan dan menjadikannya mempunyai 🎜🎜 {wildcard}🎜🎜wildcard: 🎜 🎜🎜 YAML:# app/config/routing.ymllucky_number: path: /lucky/number/{count} defaults: { _controller: AppBundle:Lucky:number }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>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>' ); } // ...}Disebabkan
{count} {count}
占位符,页面URL变得不一样了。现在它要求URL匹配/lucky/number/*
,比如/lucky/number/5
。这样一来你可以在控制器中收到并使用这个值:// src/AppBundle/Controller/LuckyController.php // ... // --> add this new use statement use Symfony\Bundle\FrameworkBundle\Controller\Controller; class LuckyController extends Controller { // ...}去
/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
pemegang tempat #🎜#, URL halaman 🎜# berbeza. Kini ia memerlukan URL untuk memadankan
. Dengan cara ini anda boleh menerima dan menggunakan nilai ini dalam pengawal anda:/lucky/number/*, seperti / bertuah/ nombor/5 /lucky/number/xx
#🎜🎜##🎜🎜#Uji, gantikan xx dengan #🎜🎜##🎜🎜##🎜🎜##🎜🎜#any#🎜 🎜##🎜🎜##🎜🎜##🎜🎜# Nombor: #🎜🎜##🎜🎜##🎜🎜##🎜🎜##🎜🎜# Nombor: #🎜🎜##🎜🎜##🎜🎜🎜e##🎜 >#🎜🎜##🎜🎜##🎜🎜 #http://localhost:8000/api/lucky/number/7#🎜🎜##🎜🎜##🎜🎜##🎜🎜##🎜 🎜##🎜🎜# Anda sepatutnya melihat nombor bertuah 7 dikeluarkan! Tambahkan parameter #🎜🎜##🎜🎜#$placeholder
#🎜🎜##🎜🎜# dalam pengawal dan anda boleh mendapatkan sebarang #🎜🎜##🎜🎜#< kod>{placeholder }#🎜🎜##🎜🎜#Pastikan sahaja nama mereka adalah sama untuk nilai pemegang tempat. #🎜🎜##🎜🎜##🎜🎜##🎜🎜##🎜🎜##🎜🎜# Sistem-routing juga boleh dilakukan #🎜🎜##🎜🎜##🎜#🎜🎜#🎜 Lebih Berbilang #🎜🎜##🎜🎜##🎜🎜##🎜🎜#, seperti menyokong berbilang ruang letak (seperti #🎜🎜##🎜🎜#/blog/{category}/ { page}
#🎜🎜##🎜🎜#), menjadikan ruang letak pilihan dan ruang letak mandatori yang sepadan dengan ungkapan biasa #🎜🎜##🎜🎜# (cth. #🎜🎜##🎜🎜 #{count} #🎜🎜##🎜🎜#mestilah #🎜🎜##🎜🎜##🎜🎜##🎜🎜# sebagai nombor). #🎜🎜##🎜🎜##🎜🎜##🎜🎜##🎜🎜##🎜🎜#at #🎜🎜##🎜🎜##🎜🎜##🎜🎜#🎜🎜🎜#laluan #🎜 #🎜🎜##🎜🎜#Bab Cari lebih banyak dan jadilah pakar penghalaan. #🎜🎜##🎜🎜##🎜🎜# #🎜🎜##🎜🎜#Templat rendering (menggunakan bekas) #🎜🎜##🎜🎜##🎜🎜##🎜#🎜🎜 #🎜🎜#
#🎜🎜##🎜🎜##🎜🎜# Jika anda memulangkan HTML dalam pengawal, anda mungkin perlu memberikan templat. Nasib baik, Symfony mempunyai Twig: bahasa templat yang mudah dipelajari yang berkuasa tetapi cukup menyeronokkan. #🎜🎜##🎜🎜##🎜🎜##🎜🎜##🎜🎜##🎜🎜#Pada masa ini, #🎜🎜##🎜🎜#LuckyController#code>#🎜🎜 Tidak mewarisi dari mana-mana kelas asas. Cara paling mudah untuk merujuk Twig (atau alat Symfony lain) pada masa ini ialah mewarisi #🎜🎜##🎜🎜# Pengawal#🎜🎜##🎜🎜# kelas asas Symfony: #🎜🎜# #🎜🎜##🎜🎜# // 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); } // ...}#🎜🎜##🎜🎜##🎜🎜#Gunakan perkhidmatan templat #🎜🎜##🎜🎜##🎜🎜##🎜🎜#¶#🎜🎜#¶#🎜 🎜🎜##🎜🎜#Ini tidak mengubah apa-apa, tetapi membawa anda ke Bekas/Bekas#🎜🎜🎜🎜🎜🎜 #: Ini ialah objek seperti tatasusunan yang membolehkan anda mengekstrak peringkat sistem each# 🎜🎜# Objek Berguna Objek berguna ini dipanggil #🎜🎜🎜##🎜🎜🎜🎜🎜🎜🎜🎜 🎜# (perkhidmatan), di mana Symfony menyediakan objek perkhidmatan khusus untuk memaparkan templat, satu lagi untuk pengelogan dan banyak lagi. Untuk memaparkan templat Twig, nama perkhidmatan yang diperlukan ialah
templat :
// 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) ); }templating
:枝条:{# app/Resources/views/lucky/number.html.twig #} {% extends 'base.html.twig' %} {% block body %} <h1>Lucky Numbers: {{ luckyNumberList }}</h1> {% endblock %}
“服务容器”十分重要,学习过程中你会掌握大量相关知识。现在,你只需了解它拥有很多对象,然后你可以通过“昵称”(比如
templating
或logger
)利用get()
来得到其中的任何一个。templating
服务,是TwigEngine
的实例,里面有个render()
方法。但是还可以再简单些!通过继承
Controller
基类,你可以使用很多快捷方法,比如render()
#🎜##🎜"Bekas perkhidmatan" adalah sangat penting, dan anda akan menguasai banyak pengetahuan yang berkaitan semasa proses pembelajaran
. Sekarang, anda hanya perlu memahami bahawa ia mengandungi banyak objek, dan kemudian anda boleh menghantarnya dengan "nama panggilan" (sepertimempunyai kaedah #🎜🎜##🎜🎜#
templatan#🎜🎜 # atau # 🎜🎜# logger ) Gunakanget()
untuk mendapatkan mana-mana daripada mereka.templatan perkhidmatan, ialahTwigEngine
#🎜 Contoh 🎜#render()
#🎜🎜##🎜🎜#. #🎜🎜##🎜🎜##🎜🎜##🎜🎜##🎜🎜##🎜🎜#Tetapi ia boleh menjadi lebih ringkas! Dengan mewarisi kelas asas #🎜🎜##🎜🎜#Pengawal#🎜🎜##🎜🎜#, anda boleh menggunakan banyak kaedah pintasan, seperti #🎜🎜##🎜🎜# render( )#🎜🎜##🎜🎜#:#🎜🎜##🎜🎜##🎜🎜# 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() ?>#🎜🎜#Sila rujuk bab pengawal untuk mengetahui cara kaedah pintasan dalam pengawal berfungsi. #🎜🎜##🎜🎜##🎜🎜##🎜🎜##🎜🎜##🎜🎜#Pengguna lanjutan sila rujuk #🎜🎜##🎜🎜##🎜🎜##🎜🎜 untuk dendakan pengawal sebagai Perkhidmatan#🎜🎜##🎜🎜##🎜🎜##🎜🎜#. #🎜🎜##🎜🎜##🎜🎜##🎜🎜##🎜🎜#Buat templat ¶#🎜#
¶#🎜##🎜 #
Jika anda memuat semula halaman sekarang, anda akan mendapat ralat:#🎜🎜 #🎜 🎜#Tidak dapat mencari templat "lucky/number.html.twig"
#🎜🎜🎜#🎜🎜🎜 satu
Letakkan dalam:apl/Sumber/pandangan/bertuah app/Resources/views/lucky
目录,再将number.html.twig
direktori, dan kemudiannumber.html. ranting #🎜🎜#YAML:# app/config/config.yml # ...framework: secret: '%secret%' router: resource: '%kernel.root_dir%/config/routing.yml' # ...twig: debug: '%kernel.debug%' strict_variables: '%kernel.debug%' # ...rrree#🎜🎜##🎜🎜#Twig mengalu-alukan anda! Fail ringkas ini sudah menunjukkan kefungsian asas: sintaks seperti
{{ 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代码的材料都放在这里。
digunakan untuk mencetak sesuatu. Dan #🎜🎜##🎜🎜#
src/
luckyNumberList#🎜🎜##🎜🎜#Pembolehubah ini ialah #🎜🎜##🎜🎜# render() Pass dalam kod> #🎜🎜##🎜🎜# kaedah. #🎜🎜##🎜🎜##🎜🎜##🎜🎜# % memanjangkan 'base.html.twig' %#🎜🎜##🎜🎜# sepadan dengan fail susun atur, ia terletak #🎜🎜##🎜🎜##🎜🎜##🎜🎜#app / Resources / views / base.html.twig#🎜🎜##🎜🎜##🎜🎜##🎜🎜#, fail ini disertakan dengan Symfony projek ditubuhkan untuk wujud. Ia #🎜🎜##🎜🎜##🎜🎜##🎜🎜# agak #🎜🎜##🎜🎜##🎜🎜##🎜🎜#polos (hanya untuk struktur HTML yang tidak digayakan) anda untuk menyesuaikan. #🎜🎜##🎜🎜# {% blok badan %}#🎜🎜##🎜🎜# bahagian menggunakan templat ranting #🎜🎜##🎜🎜##🎜🎜# #🎜🎜# Sistem pewarisan/Sistem pewarisan#🎜🎜##🎜🎜##🎜🎜##🎜🎜#, masa depan akan diletakkan dalam templat induk kandungan #🎜🎜##🎜🎜# base.html.twig kod>#🎜🎜##🎜🎜#Kedudukan yang sepadan dalam susun atur. #🎜🎜##🎜🎜##🎜🎜##🎜🎜##🎜🎜##🎜🎜#Segarkan halaman sekarang#🎜🎜##🎜🎜##🎜🎜#
#🎜🎜##🎜🎜#Pada masa ini hanya terdapat satu direktori dalam direktori - #🎜🎜##🎜🎜 #🎜🎜 # #🎜🎜#http://localhost:8000/lucky/number/9#🎜🎜##🎜🎜##🎜🎜##🎜🎜##🎜🎜##🎜🎜# Jika anda melihat kod sumber halaman, anda akan melihat rangka HTML yang lengkap, terima kasih kepada #🎜🎜##🎜🎜#base.html.twig
#🎜🎜##🎜🎜#. #🎜🎜##🎜🎜##🎜🎜##🎜🎜##🎜🎜##🎜🎜#Ini hanya sebahagian kecil daripada kuasa Twig. Jika anda ingin menguasai sintaks Twig, gelung tatasusunan, mengeluarkan templat lain dan ciri yang lebih hebat, anda harus merujuk kepada #🎜🎜##🎜🎜##🎜🎜##🎜🎜#Buat dan gunakan templat#🎜🎜##🎜 🎜 ##🎜🎜##🎜🎜#. #🎜🎜##🎜🎜##🎜🎜##🎜🎜##🎜🎜#Lihat keseluruhan projek #🎜🎜##🎜🎜##🎜🎜##🎜🎜#¶🎜#🎜#🎜 🎜 #
#🎜🎜##🎜🎜##🎜🎜#Anda telah mencipta URL yang fleksibel, memberikan templat menggunakan warisan dan mengeluarkan respons JSON. Sudah tiba masanya untuk melihat fail dalam projek anda dan mengalih keluar aura misteri mereka. Sebelum ini anda telah bekerja dalam dua folder yang sangat penting: #🎜🎜##🎜🎜##🎜🎜##🎜🎜##🎜🎜 ##🎜🎜##🎜🎜#Profil dan templat kandungan. Secara umumnya, selagi #🎜🎜##🎜🎜##🎜🎜##🎜🎜# bukan #🎜🎜##🎜🎜##🎜🎜##🎜🎜# bahan kod PHP diletakkan di sini. #🎜🎜##🎜🎜##🎜🎜#app/
#🎜🎜##🎜🎜#src/
#🎜🎜#Di mana program PHP anda berada 99% masa anda akan bekerja dalam
src/
(PHP fail ) atau di bawahapp/
(barangan lain). Apabila kemahiran teknikal anda bertambah baik, anda akan mengetahui perkara yang berlaku di bawah setiap folder.src/
(PHP文件)或app/
(其他东东)之下。随着你的技术实力高大上起来,你会学习到每个文件夹下都发生了什么。
app/
目录也存在其他内容,app/AppKernel.php
像是,你要用它来开启新捆绑(它是app/
下面很少的PHP文件之一)。
src/
目录下暂时只有一个目录 -src/AppBundle
- 所有的东西都在这里面。一个包,像一个“插件”,你可以找到开源捆绑,然后把它们安装到你的项目中,但就算是你自己的代码,也是处理束之中 - 典型的就是AppBundle(尽管这捆毫无特殊之处)。为了深入了解捆绑,以及为何你应该创建多个捆绑(提示:在项目之间共享代码),请参阅Bundle系统章节。那么项目中的其他文件夹又是什么情况呢?
web/
它是整个项目的文档根目录,存在可公开访问的文件,比如CSS,图片以及用于执行应用程序(
app_dev.php
和app.php
)的Symfony的前端控制器(前端控制器)。
tests/
你程序的自动测试(如单元测试/单元测试)被存放在这里。
bin/
用于存放二进制(binary)文件。最重要的是
console
文件,它被用于控制中执行Symfony命令。
var/
这是那些自动生成的文件被存放的地方,比如缓存文件(
var/cache/
)和日志文件(var/logs/
)。
vendor/
app/
#🎜🎜##🎜🎜# Terdapat juga kandungan lain dalam direktori, #🎜🎜##🎜🎜#app/AppKernel.php
#🎜🎜##🎜🎜#Sebagai contoh, anda perlu menggunakannya untuk membuka berkas baharu (ia ialah #🎜🎜##🎜🎜#app/
#🎜🎜## 🎜🎜#Berikut ialah salah satu daripada beberapa fail PHP). #🎜🎜##🎜🎜##🎜🎜##🎜🎜#src/ src/AppBundle
#🎜🎜##🎜🎜#- Semuanya ada di dalamnya. Satu pakej, seperti "plugin", anda boleh mencari #🎜🎜##🎜🎜##🎜🎜##🎜🎜#open source bundle #🎜🎜##🎜🎜##🎜🎜##🎜🎜# dan kemudian letakkan mereka Dipasang ke dalam projek anda, tetapi walaupun kod anda sendiri disertakan - biasanya AppBundle (walaupun tiada apa-apa yang istimewa tentang berkas ini). Untuk menyelam lebih mendalam tentang himpunan dan sebab anda perlu membuat berbilang berkas (petunjuk: kongsi kod antara projek), lihat #🎜🎜##🎜🎜##🎜🎜##🎜🎜#BundleSystem#🎜🎜##🎜 🎜## 🎜🎜##🎜🎜# Bab. #🎜🎜##🎜🎜##🎜🎜##🎜🎜##🎜🎜##🎜🎜#Jadi bagaimana keadaan dengan folder lain dalam projek? #🎜🎜##🎜🎜##🎜🎜##🎜🎜#web/#🎜🎜##🎜🎜##🎜🎜##🎜🎜##🎜Ia adalah🎜 Direktori akar dokumen bagi keseluruhan projek, di mana terdapat fail yang boleh diakses secara umum, seperti CSS, imej dan fail yang digunakan untuk melaksanakan aplikasi (#🎜🎜##🎜🎜# app_dev.php
#🎜🎜 ##🎜🎜 # dan #🎜🎜##🎜🎜#app.php
#🎜🎜##🎜🎜#) Pengawal bahagian hadapan Symfony (pengawal bahagian hadapan). #🎜🎜##🎜🎜##🎜🎜##🎜🎜#ujian/#🎜🎜##🎜🎜##🎜🎜##🎜🎜##🎜 🎜#Ujian automatik program anda (seperti ujian unit/ujian unit) disimpan di sini. #🎜🎜##🎜🎜##🎜🎜# #🎜🎜#bin/#🎜🎜##🎜🎜##🎜🎜##🎜🎜##🎜 🎜#Digunakan untuk menyimpan fail binari. Perkara yang paling penting ialah fail #🎜🎜##🎜🎜# konsol#🎜🎜##🎜🎜#, yang digunakan untuk melaksanakan arahan Symfony dalam kawalan. #🎜🎜##🎜🎜##🎜🎜# #🎜🎜#var/
#🎜🎜##🎜🎜##🎜🎜##🎜🎜##🎜 🎜#Di sinilah fail yang dijana secara automatik disimpan, seperti fail cache (#🎜🎜##🎜🎜#var/cache/
#🎜🎜##🎜🎜#) dan fail log ( #🎜 🎜##🎜🎜#var/log/#🎜🎜##🎜🎜#). #🎜🎜##🎜🎜##🎜🎜# #🎜🎜#penjual/#🎜🎜# Melalui Pengurus Ketergantungan Komposer#🎜🎜 🎜#, perpustakaan pihak ketiga, pakej dan berkas dimuat turun di sini. Anda tidak sepatutnya mengedit apa-apa dalam direktori ini. Symfony adalah fleksibel. Anda boleh mengatasi struktur direktori lalai jika perlu. Rujukan
Cara mengatasi lalai SymfonyStruktur direktori#🎜#🎜🎜
Konfigurasi peringkat program ¶#🎜#
#🎜##🎜🎜🎜 🎜#Symfony mempunyai beberapa berkas asli terbina dalam (buka
app/AppKernel.php
app/AppKernel.php
文件查看),你可以安装更多.bundles的主要配置文件是app/config/config.yml
: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>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%',)); // ...$ php bin/console config:dump-reference framework
framework
根键配置的是FrameworkBundle,twig
根键配置的是TwigBundle,诸如此类.Symfony中的许多行为都可以被控制,只需改变配置文件的一些选项即可。要搞清原因,请阅读配置参考。或者,通过超好用的
#🎜🎜 #bin/console
anda untuk melihat), Fail konfigurasi utama di mana anda boleh memasang lebih banyak .bundle ialahapp/config/config.yml
:rrreeerrreeerrreee
rangka kerjaKunci akar dikonfigurasikan dengan FrameworkBundle, ranting # 🎜🎜#Kunci akar dikonfigurasikan dengan TwigBundle, dan seterusnya. banyak#🎜🎜 em dalam Symfony >Kelakuan boleh dikawal dengan menukar beberapa pilihan dalam fail konfigurasi. Untuk mengetahui sebabnya, baca Rujukan Konfigurasi .
Atau, melalui
#🎜🎜🎜#bin/konsol kod># 🎜🎜# arahan untuk mendapatkan templat konfigurasi lengkap yang dilucutkan daripada kunci akar: rrreee#🎜🎜fo##🎜🎜🎜 sistem konfigurasi Ia sangat berkuasa, termasuk persekitaran, import dan parameter, dsb. Untuk memahami semua ini, rujuk bab
Konfigurasi.
- ¶
Langkah seterusnya?
#🎜🎜!#Tahniah Anda telah mula menguasai Symfony dan akan mempelajari cara baharu untuk membina program yang cantik, berfungsi, pantas dan boleh diselenggara.
Baiklah, anda masih perlu membiasakan diri dengan bab-bab berikut untuk melengkapkan penguasaan infrastruktur: #🎜 🎜 #Pengawal#🎜 #routing#🎜#🎜🎜🎜#🎜🎜🎜🎜🎜🎜🎜 Kemudian, dalam #🎜#🎜水🎜 🎜🎜#, dan juga belajar #🎜🎜 #bekas perkhidmatan#🎜🎜🎜🎜🎜##🎜🎜 🎜🎜#,
#🎜🎜##🎜🎜##🎜🎜#Sistem borang#🎜🎜##🎜🎜##🎜🎜##🎜🎜#, gunakan #🎜🎜#, gunakan #🎜🎜🎜 🎜##🎜🎜#Doctrine#🎜🎜##🎜🎜##🎜🎜##🎜🎜# (jika anda perlu menanyakan pangkalan data) dan banyak lagi! #🎜🎜##🎜🎜##🎜🎜#Terdapat juga Buku masakan Cina, padat dengan artikel "bagaimana" yang lebih maju untuk menyelesaikan lagi
Semoga anda semua selamat belajar!
🎜🎜