我尝试将一个帮助程序库添加到laravel 4后得到一个MethodNotAllowedHttpExceptions。我已经在app / libraries / Time.php中创建了一个类,我添加了'库&#39 ;文件夹到composer.json文件,在classmap下。
在我的global.php文件中,我添加了:app_path()。' / libraries'到addDirectories数组。之后我做了./composer.phar dump-autoload。
在我的loginController下面是我试图利用这个类的地方。完整的课程是在这之下。
应用/库/ Time.php
class Time {
// convert times to user submitted time
public function set($zone)
{
// Get user timezone from map
$timezone = $this->get($zone);
// set default timezone
date_default_timezone_set($timezone);
}
// maps the timezone the user gives
private function get($time)
{
$zone = Array(
'PST' => 'America/Los_Angeles',
'MST' => 'America/Denver',
'CST' => 'America/Chicago',
'EST' => 'America/New_York',
'HST' => 'America/Adak',
'AKST' => 'America/Anchorage'
);
return $zone[$time];
}
}
我很好奇如何保持httpexception不会发生以及我在创建此库时可能出错的地方。
更新:对于想知道的人,loginController是一个资源控制器,我在store()中调用类,如下所示:Time :: store($ zone);导致错误的是这一行。
答案 0 :(得分:1)
我不确定它是否会导致您的问题,但set
不是您班级中的静态方法。试试这个:
public static function set($zone)
{
// Get user timezone from map
$timezone = self::get($zone);
// set default timezone
date_default_timezone_set($timezone);
}
// maps the timezone the user gives
private static function get($time)
{
$zone = Array(
'PST' => 'America/Los_Angeles',
'MST' => 'America/Denver',
'CST' => 'America/Chicago',
'EST' => 'America/New_York',
'HST' => 'America/Adak',
'AKST' => 'America/Anchorage'
);
return $zone[$time];
}
答案 1 :(得分:0)
错误MethodNotAllowedHttpException与您在路线中使用的HTTP方法有关:
所以如果你有:
Route::get('posts', ...);
Laravel不接受该路线的POST,您需要创建一个
Route::post('posts', ...);
你可能也有一条含糊不清的路线:一条不应被击中的路线被击中而不是另一条。这可能会导致路径冲突:
Route::get('{name}', ...);
Route::resource('posts', ...);
如果您尝试点击/posts
,它会点击您的第一个获取而不是资源。