我开始使用Laravel 4,它似乎是一个很好的选择,无论如何在编写我的第一个项目之前,我想了解我的常用方法是否可以使用laravel。
通常我将三元组保留在/ modules文件夹下的后端和前端,如下所示:
/modules
/backend
/config
/controllers
/models
/migrations
/ecc..
/frontend (and so on...)
laravel我不确定如何管理这个。我正在尝试使用软件包,但是php artisan workbench me/mypackage --resources
没有构建整个文件夹结构...在哪里放置控制器和模型,以及如何设置路由?
然后我发现这个link启用了类似模块的系统。那么,我应该遵循什么方法来保持拉拉维尔的方式呢?
答案 0 :(得分:13)
好吧,让我们开始......
首先,我使用Artisan创建了Andreyco\Cart
包
包及其结构
|workbench
|-andreyco
|---cart
|-----public
|-----src
|-------Andreyco
|---------Cart
|-------config
|-------lang
|-------migrations
|-------views
|-----tests
|-----vendor
在答案中,我将使用这个确切的包作为示例。
想象一下,该文件夹workbench/andreyco/cart/src
是应用程序文件夹。如果你这样做,你应该知道大部分答案。 (实际上App也是包装)
问: 如何设置路线
A:创建文件 - > workbench/andreyco/cart/src/routes.php
。这样做了。
问: 放置控制器和模型的位置
答:只需在那里创建controllers
和models
文件夹
因此TestController
位于workbench/andreyco/cart/src/controllers/TestController.php
文件。与型号非常相似。
目录树看起来像这样
|workbench
|-andreyco
|---cart
|-----public
|-----src
|-------Andreyco
|---------Cart
|-------config
|-------controlers
|-------lang
|-------migrations
|-------models
|-------views
|-----tests
|-----vendor
我创建了routes.php
,TestController.php
和TestModel.php
// workbench/andreyco/cart/src/routes.php
<?php
Route::get('test', 'Andreyco\\Cart\\Controllers\\TestController@index');
// workbench/andreyco/cart/src/controllers/TestController.php
<?php namespace Andreyco\Cart\Controllers;
use Andreyco\Cart\Models\TestModel;
class TestController extends \BaseController
{
public function index()
{
return TestModel::printCurrentLocation(__DIR__);
}
}
// workbench/andreyco/cart/src/models/TestModel.php
<?php namespace Andreyco\Cart\Models;
class TestModel extends \Eloquent
{
public static function printCurrentLocation($location)
{
return "Testing package controller, script is located at: {$location}";
}
}
正如您所看到的,我使用了名称空间,所以你应该这样做 命名空间让您的生活更加轻松。
重要:创建这些文件后,您需要更新composer.json
文件,以便可以自动加载类
// composer.json
"autoload": {
"classmap": [
...
"workbench/andreyco/cart/src/controllers",
"workbench/andreyco/cart/src/models"
]
},
在此之后,使用composer dump-autoload -o
命令转储更改。
问: 那么,我应该遵循什么方法来保持laravel方式呢?
A:在我看来,你应该坚持使用包裹。至少,我愿意。这就是Laravel的设计方式。
我希望这对你有所帮助,祝你好运!
修改强>
视图在这里不是问题。它们的工作方式与主应用程序包一样。
// workbench/cart/src/view/foldername/viewname.blade.php
<h1>Testing view file.</h1>
{{ "Blade" }} syntax is parsed as well, no problem here.
从包的控制器返回视图非常简单
public function index()
{
return \View::make('cart::foldername.viewname');
}