所以,也许我没有在我的模特之间很好地连接点。 我收到错误:
Argument 1 passed to RespuestaController::postRespuesta() must be an instance of Question, string given
当我在视图中传递问题模型时:
{{ Form::open( array( 'action' => array( 'RespuestaController@postRespuesta', $question->id ) ) ) }}
这是我的app / routes.php:
Route::model('respuesta', 'Respuesta');
Route::model('question', 'Question');
Route::resource('questions', 'QuestionController');
Route::controller('respuestas', 'RespuestaController');
和RespuestaController:
class RespuestaController extends \BaseController {
public function postRespuesta(Question $question)
{
$validator = Validator::make(Input::all(),
array(
'respuesta' => 'required'
)
);
if( $validator->fails() ){
return Redirect::route('questions.show')
->withErrors($validator);
}else{
$respuesta = Input::get('respuesta');
$respuesta = Respuesta::create(array(
'respuesta' => $respuesta
)
);
$respuesta->save();
$question->respuesta()->associate($respuesta)->save();
$respuesta->user()->associate(Auth::user())->save();
//$question = Question::find($question); //this works without (Question $question), but i think is not a good practice or is it??
}
}
}
我正在进行模型绑定吗?或者仅适用于手动创建的路径,而不仅仅是 路由::控制器(' respuestas',' RespuestasController');
Thanx的支持。
答案 0 :(得分:1)
您需要将资源名称绑定为与模型资源相同的名称(而不是模型名称) - 请尝试以下操作:
Route::model('questions', 'Question');
Route::resource('questions', 'QuestionController');
注意 - 您无法在Route::controller()
上使用此功能。
我个人建议不要使用resource()
或controller()
- 而是手动定义所有路线。 This is a link to a great blog post by Phil Sturgeon了解为什么要考虑手动定义所有路线。