我有一个PriceController来更新我的物品的价格。在我的应用程序中,价格是一组或PriceSegments(或规则)。
所以我的PriceController @ update确实:
foreach (Input::get('price_segment_id') as $price_segment_id)
{
try {
\App::make('BF\Controllers\PriceSegmentController')->update($price_segment_id);
} catch(BF\Exceptions\ValidationException $e) {
$errors[] = $e->get_errors();
}
}
我的PriceSegmentController @ update执行每个段的更新,如下所示:
$priceSegment = $this->repository->find($id);
if($priceSegment) {
// UPDATE $priceSegment with Input, etc.
$this->validator->validate($priceSegment->toArray());
$priceSegment->save();
}
如果我在PriceSegmentController中执行try-catch,它会按预期工作,但我想执行try-catch和PriceController以收集所有错误并能够立即通知所有错误。
问题是没有捕获异常,我不知道为什么。我猜是与App :: make('foo')的行为有关,但我没想到它。
请帮忙吗?
由于
编辑:我的代码结构基于这个示例:http://www.sitepoint.com/data-validation-laravel-right-way/我正在使用我自己的Exceptions扩展Exception PHP类
答案 0 :(得分:0)
我认为问题出现的原因是您正在使用laravel中的默认验证机制,如here所述。
您可以做的是在PriceSegmentController中捕获异常并且:
或使用您在该控制器中捕获的异常创建自定义异常
并将自定义异常进一步提升到食物链中。
我希望它有所帮助。