【问题标题】:Laravel - Using bundle to retrieve data from dbLaravel - 使用 bundle 从数据库中检索数据
【发布时间】:2013-05-15 20:09:24
【问题描述】:

首先,我是 Laravel 和 MVC 环境的新手。对于这个项目,我使用 MySQL 作为数据库,使用 Charisma 作为捆绑包。尝试从 db 检索数据时遇到困难。我想知道是否有人会指导我解决所有这些问题。

  1. 如果我使用捆绑包,我应该将所有模型、控制器和路由放在哪里?在/application 文件夹中,还是在包本身的文件夹中?
  2. 什么时候使用/application文件夹,什么时候使用Charisma文件夹? (显然,我只将它用于前端 UI)
  3. 我的数据库表中有一条记录(名为user_links),用于测试Charisma View 中的数据检索。我该怎么做?

我使用这个CRUD Tutorial in Laravel 作为指导,但在使用捆绑包时有点令人困惑。

好吧,让我试着按照我的方式去做。我将在这里进行检索。我希望有人能指出错误并指导我进行修复。:

名称user_links

id: int
user_id: varchar
link_title: text
link_url: text

Model /application/models/user_links.php(由于 Charisma 没有 /models 文件夹,我将使用默认文件夹):

class User_Link extends Eloquent{
}

控制器 bundles/charisma/controllers/user_link.php(使用 Charisma 控制器文件夹)

class Charisma_User_Link_Controller extends Base_Controller{

  public $restful = true;

  public function get_index(){
 $user_links =  User_Link(); 
return View::make('user_links.index')
->with('link_title', 'Link Title')
->with('link_url', 'URL');
  }
}

查看 /bundles/charisma/views/pages/index.blade.php:

<div >
@foreach($user_link->results as $user_links)
    {{ $user_links::link_title }}
    {{ $user_links::link_url }}
@endforeach
</div>

路线 /bundles/charisma/routes.php:

Route::controller('charisma::user_link');

就是这样。当然会有一些错误,但是如果您需要更多信息,请告诉我。提前致谢。

【问题讨论】:

    标签: php mysql laravel laravel-3 charisma


    【解决方案1】:

    您应该为您的前端使用应用程序文件夹UI,因为charisma 是一个admin bundle,它是为应用程序设计的,这些应用程序具有设置和维护各种系统配置的后端支持,例如自定义@987654326 @。

    Laravel-3 中,application 文件夹是将控制器、模型和视图保存在相应文件夹中的默认位置,并且还使用 application/routes.php 来路由控制器。

    但是,如果您想使用不同的捆绑包作为charisma,那么您应该将捆绑包保留在捆绑包目录的根目录中,并将捆绑包名称添加到bundles.php 文件中的数组中。例如,我在我的一个项目中使用charisma 作为我的管理面板的捆绑包,并且文件夹的名称是 admin 我放置了charisma 的文件(我将魅力重命名为 admin)

    return array(
        'admin' => array('handles' => 'hit_admin'), <-- added for admin bundle
        // more bundles..........
    );
    

    我的目录结构是domain_root/bundles/admin,管理员是charisma(重命名),而且你必须使用你的包routes.php作为那个包的控制器。例如,在domain_root/bundles/admin 我有一个routes.php 文件,我已经在该文件中注册了管理包的所有路由,并且管理包有它自己的控制器、视图、模型和公共文件夹。所以,基本上,我不得不使用这些文件夹。所有管理控制器都在domain_root/bundles/admin/controllers 文件夹中,模型和视图也一样。每个包也有它自己的公用文件夹来保存它自己的资产。

    admin/routes.php 中,路由是这样的

    Route::any('(:bundle)', array('as' => 'admin_home', 'uses' => 'admin::home@index'));
    

    管理包中的每个控制器都可以扩展它自己的基本控制器,例如,我使用过,

    class Admin_Home_Controller extends Admin_Base_Controller {
        // ...
    }
    

    admin/controllers 文件夹中有一个 base.php 文件,它是管理基本控制器,它是这样的

    class Admin_Base_Controller extends Controller {
    
        public function __construct()
        {
            parent::__construct();
    
            // Add assets for admin
            Asset::add('jQuery', 'js/jquery-1.7.2.min.js');
        }
    
        public function __call($method, $parameters)
        {
            return Response::error('404');
        }
    
    }
    

    有关更多信息,您可以查看this tutorial 并阅读documentation

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-24
      • 1970-01-01
      • 1970-01-01
      • 2018-09-19
      • 2016-12-06
      • 1970-01-01
      • 2021-01-18
      相关资源
      最近更新 更多