好的,这个有点棘手且不寻常,但我需要为我的一个项目做这件事。
所以我有2条路线:
Route::get('table/edit', array('uses'=>'CompanyController@editTable'));
Route::post('table/update', array('uses'=>'CompanyController@editTableAction'));
现在数据库表中我将存储数据的字段是动态的,所以我必须利用:
Input::all();
方法。我的表单中有一个隐藏的输入
<input type="text" name="database_field_name_user_friendly" value="User Input Some Name" />
<input type="hidden" name="database_field_name" value="" />
现在,正如您所见,
Input::get('database_field_name');
是空的。有没有办法在控制器内设置这个输入框的值?我需要处理来自另一个输入字段database_field_name_user_friendly的值。我将运行正则表达式使其成为有效的MySQL字段名称。
非常感谢任何帮助。
答案 0 :(得分:10)
我在发布问题之后得到了解决方案:p
希望这有助于其他人!真的很容易。在您的控制器内
让我们处理输入
$database_table_name = strtolower(Input::get('account_database_table_name'));
//make alphaunermic
$database_table_name = preg_replace("/[^a-z0-9_\s-]/", "", $database_table_name);
//Clean multiple dashes or whitespaces
$database_table_name = preg_replace("/[\s-]+/", " ", $database_table_name);
//Convert whitespaces and underscore to dash
$database_table_name = preg_replace("/[\s_]/", "_", $database_table_name);
然后只需设置值!使用Laravel Input::merge
方法
Input::merge(array('account_database_table_name'=>$database_table_name));
谢谢!