laravel 4修改控制器内的输入值

时间:2014-03-18 13:16:11

标签: php mysql regex laravel-4

好的,这个有点棘手且不寻常,但我需要为我的一个项目做这件事。

所以我有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字段名称。

非常感谢任何帮助。

1 个答案:

答案 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));

谢谢!