私はlaravelを初めて使用し、数日前にプロジェクトを開始しました。gitなしでcomposerを実行したところ、「問題なく」動作しました。昨日、パッケージをインストールしようとしましたfelixkiss/uniquewith-validator
が、問題なくインストールできましたが、新しいオプションは実装されていませんでした。composer を完全に更新した後、アプリケーション全体が機能しなくなり、メソッドredirectIfTrailingSlash()
が未定義であることを示すエラーが発生しました。しかし、これはあくまでも「前話」であり、以降にとって重要かどうかはわかりません。
いくつかのガイドをもう一度読んだ後、間違ったlaravelパッケージを使用していることに突然気付きました! laravel/framework
正しいパッケージの代わりに使用しましたlaravel/laravel
。この時点で、壊れたアプリケーションをバックアップし、composer を使用して適切なパッケージをインストールすることにしました。git を使用しないと常に多くの頭痛の種になり、git もインストールすることにしました。laravel/framework
そのため、依存関係からパッケージを削除して追加しましlaravel/laravel
た。
驚いたことに、すべてがうまく機能し、私のファイルも問題ありませんでしたが、問題はすべてのコントローラーが壊れていたことだけです。エラーが発生しています:
コントローラ メソッドが見つかりません。
私は試した:
composer dump-autoload
composer update
php artisan dump-autoload
(Artisan は新しいパッケージでインストールされたばかりです)
アップデート:
さらに調査した結果、問題は古いコントローラーに直接あるのではなく、エラーをスローする親メソッドの呼び出しにあります。これは私の CalendarController です:
class CalendarController extends BaseController {
protected $layout = 'layouts.master';
public function __construct()
{
//this is a method of BaseController, if I comment out the line, it works fine
$this->getDays();
}
public function init()
{
$this->layout->title = 'Start';
$this->layout->key = 'calendar';
usort($this->viewData['days'],array($this,'sortDays'));
$this->getCalendarView();
}
private function sortDays($a,$b)
{
return $a->teaser_index > $b->teaser_index;
}
private function getCalendarView()
{
$this->layout->content = View::make('layouts.calendar', $this->viewData);
}
}
しかし、メソッド内のすべてをコメントアウトしてもgetDays()
、エラーがスローされるため、何らかの理由で親メソッドを呼び出すことができなくなります。
別の更新
getDays()
メソッドをメソッドに置き換えましたhello()
。これはベースコントローラーです (getDays()
当分の間削除されます):
class BaseController extends Controller {
var $viewData = array();
/**
* Setup the layout used by the controller.
*
* @return void
*/
protected function setupLayout()
{
if ( ! is_null($this->layout))
{
$this->layout = View::make($this->layout);
}
}
public function hello()
{
return 'hello';
}
}
これは現在のコントローラーです (hello()
現在init()
、ルートを通じて呼び出されるメソッドにあります):
class CalendarController extends BaseController {
protected $layout = 'layouts.master';
public function __construct()
{
//this is a method of BaseController, if I comment out the line, it works fine
//$this->getDays();
}
public function init()
{
$this->layout->title = 'Start';
$this->layout->key = 'calendar';
//usort($this->viewData['days'],array($this,'sortDays'));
//$this->getCalendarView();
echo $this->hello();
}
private function sortDays($a,$b)
{
return $a->teaser_index > $b->teaser_index;
}
private function getCalendarView()
{
$this->layout->content = View::make('layouts.calendar', $this->viewData);
}
}