根据this,如果您执行以下操作
<?php
// app/routes.php
Route::get('/', function()
{
return View::make('form');
});
Route::post('handle-form', function()
{
var_dump(Input::all());
});
我们将获得以下内容:
array(0) { }
根据Dayle Rees,这是因为文件存储在$ _FILES数组中,而不是存储在$ _GET或$ _POST中。所以当我们将第二个函数更改为:
Route::post('handle-form', function()
{
var_dump(Input::file('book'));
});
我们得到:
object(Symfony\Component\HttpFoundation\File\UploadedFile)#9 (7) {<
["test":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=><
bool(false)<
["originalName":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=><
string(14) "codebright.pdf"<
["mimeType":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=><
string(15) "application/pdf"<
["size":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=><
int(2370413)<
["error":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=><
int(0)<
["pathName":"SplFileInfo":private]=><
string(36) "/Applications/MAMP/tmp/php/phpPOb0vX"<
["fileName":"SplFileInfo":private]=><
string(9) "phpPOb0vX"<
}<
但是,在我的项目中,当我使用Input :: all()时,我仍然得到与上面相同的正确输出。我使用的文件不同,但我希望你明白这一点。为什么我的项目会从书中提供不同的输出?
答案 0 :(得分:3)
如果你看到/vendor/laravel/framework/src/Illuminate/Http/Request.php,
/**
* Get all of the input and files for the request.
*
* @return array
*/
public function all()
{
return array_replace_recursive($this->input(), $this->files->all());
}
包含文件和其他输入。 由于CodeBright是以laravel 3(http://goo.gl/NWltLh)开始的,我想(但不确定),这部分代码后来在Laravel 4上更新。