Laravel 4 - 一些但并非所有路线都没有生产

时间:2015-08-07 16:04:34

标签: laravel-4 url-routing production-environment

我的应用程序已在生产服务器和我的开发机器上成功运行了一年多(两者都运行IIS而没有任何漂亮的URL)。昨天我将最新的一系列(直到现在成功的)更新从开发转移到了生产,从那时起,许多路由都在生产服务器上失败,即使它们在dev上工作正常。我已经验证两台计算机上都存在完全相同的应用程序和路由文件,我已经确认php artisan routes在两台计算机上都生成相同的输出,我已经确认了他们的autoload_classmap。 php文件是相同的,我已经验证两台服务器都在运行Laravel 4.1.23。

经过一些测试后,看来,例如,URL https://localhost/EPHY/index.php/child/3958/edit会在dev上触发ChildController::edit() RESTful方法,会在生产时触发ChildController::create(),然后崩溃,因为它可以&# 39;找到它所期望的familyId参数。这是两台服务器上的routes.php中的适用行:

Route::resource( 'child', 'ChildController', array( 
    'create'  => 'child.create', 
    'store'   => 'child.store', 
    'show'    => 'child.show', 
    'edit'    => 'child.edit', 
    'update'  => 'child.update', 
    'destroy' => 'child.destroy'
));

我应该注意,另一个RESTful资源Family在两台服务器上都能成功运行,但其他人并不知情。在做了一些更多测试之后,实际上看起来任何与模型有关的模型与家庭有雄辩的关系都失败了,其他所有工作都正常。这很奇怪......

任何人都可以提出可能导致这种情况的原因,或者至少我能看到的地方?我很乐意发布更多信息。

更新:我继续探讨这个问题,而且很明显,这肯定只会影响与家庭模型具有雄辩关系的模型相关的路线;应用程序中的所有其他路径似乎都正常工作。

1 个答案:

答案 0 :(得分:0)

好吧,我想出来了,这很蹩脚。如上所述,这仅影响与Family具有雄辩关系的模型。在实践中,这意味着相关::create()的所有Controllers方法都需要Family::id值。所以,这是我正在检查的代码,确定我是否需要Input::get()Input::old()的值:     $ familyId =(空(输入:: old()))? Input :: get('familyId'):Input :: old('family_id');

有人看到问题吗? empty()无法将函数调用作为参数。一旦我将代码更改为:

,一切正常
$familyId = ( Input::old() )? Input::old('family_id') : Input::get('familyId') ;

现在,我是怎么想出来的?好吧,花了一天半的时间假设我知道“不能在写入上下文中使用函数返回值”意味着,我最终检查了GOOGLE上的DAMN错误消息!让这成为一个教训新手和退伍军人的提醒,永远不要假设你理解错误意味着什么,如果没有与groupmind仔细检查......

我很惭愧......