【问题标题】:Calling external controllers, Laravel调用外部控制器,Laravel
【发布时间】:2012-12-24 17:44:49
【问题描述】:

拥有application/controllers/admin/images/public function get_upload($id=null),其中控制器设置为restful = true

我如何从我的新闻控制器调用上面的函数。我尝试以下方法,但我得到 404,但它的功能本身可以工作......通过简单的$.post() 调用可以工作(显然有完整的路线)

$image = Controller::call('admin.images@upload', array($news_id));

任何想法我应该怎么做?

更新

即使使用 HVMC,我仍然会得到 404 执行 HMVC::get('admin.images@upload', array('news_id'=>$news_id)

applications/controller/admin/images.php

class Admin_Images_Controller extends Admin_Controller
{
     public $restful = true;
     public function get_upload($news_id)
     {

附: Admin_Controller 存在且已加载,与此无关

【问题讨论】:

    标签: php controller routes call laravel


    【解决方案1】:

    我遇到了同样的问题。问题是,如果 http 类型(post、get、put、delete)不同,它会返回 404。

    例如,假设您有 2 个控制器,图像和媒体。如果您在图像控制器中有一个名为 POST_UPLOAD 的函数,而在媒体控制器中有另一个名为 GET_RESIZE 的函数,则从 POST_UPLOAD 调用 GET_RESIZE 将返回 404,反之亦然

    但如果GET_RESIZEPOST_RESIZE 则不会发生错误,即相同的http 类型。

    这意味着http类型必须相同。

    这很糟糕,因为您需要维护RESIZE 的两个功能,即GET_RESIZEPOST_RESIZE

    这是 Laravel 中没有记录的内容。

    【讨论】:

    • 有趣的评论。无论如何,我毕竟以某种方式修复了。
    【解决方案2】:

    您要查找的是 HMVC,Lavarel 不支持开箱即用。如果我得到任何信息错误,我不使用 Lavarel 非常抱歉,但快速搜索 directs me here,他们建议使用 this bundle

    经过进一步检查,您似乎可以使用Route::forward()

    在大多数情况下,您可以使用 Route::forward() 来实现您想要做的事情。

    希望对你有帮助:)

    【讨论】:

    • 即使使用 HMVC,问题仍然存在。我仍然得到404 执行HMVC::get('admin.images@upload', array('news_id'=>$news_id));
    • 嗯,试试看:$result = \Lavarel\Routing\Route::forward('get', '/admin/images/upload');(或者你注册的方法)?
    • 如何发送$news_id 变量?
    • 来自here 它给你这样的东西:http://localhost/controller/method/arguments(大多数框架支持这种类型的URI路由)所以我假设你可以这样做:$result = \Lavarel\Routing\Route::forward('get', "/admin/images/upload/{$news_id}");。同样,从未使用过 Lavarel,但试一试 :)
    • 你是这样定义路由的吗?:Route::get('admin/images/upload/(:any)', array('uses' => 'admin.images@upload'));,也尝试将第一个正斜杠从"/admin/images/upload/{$news_id}" 删除到"admin/images/upload/{$news_id}",不确定 Lavarel 有多严格..
    猜你喜欢
    • 2021-08-02
    • 2014-05-06
    • 1970-01-01
    • 2016-11-09
    • 1970-01-01
    • 2014-09-08
    • 1970-01-01
    • 1970-01-01
    • 2018-01-24
    相关资源
    最近更新 更多