创建库时,Laravel MethodNotAllowedHttpException

时间:2014-09-24 21:59:45

标签: php oop laravel laravel-4

我尝试将一个帮助程序库添加到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);导致错误的是这一行。

2 个答案:

答案 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,它会点击您的第一个获取而不是资源。