Laravel 5.1弃用Route::filter()和其他相关功能,在文档中声称:
路由过滤器已被弃用,而不是中间件.
但是如果您的路由过滤器访问路由参数,那么如何用中间件替换它,因为它$request->route()是null在中间件中?
Route::filter('foo', function($route, $request) {
if ($route->parameter('bar') > 1000) {
return Redirect::route('large-bars');
}
});
Run Code Online (Sandbox Code Playgroud)
我能看到的最接近的是
class FooMiddleware {
public function handle($request, Closure $next)
{
// Note that $request->route() is null here, as the request
// hasn't been handled by Laravel yet.
if ($request->segment(4) > 1000) { // ewww...
return Redirect::route('large-bars');
}
return $next($request);
}
}
Run Code Online (Sandbox Code Playgroud)
但这显然比按名称引用参数要脆弱得多.我在这里错过了什么?谢谢!
https://github.com/Xethron/migrations-generator
我php artisan migrate:generate在上面的扩展的帮助下使用命令将我的数据库结构迁移到Laravel .但是有一个小问题,我的主键没有被命名为id,我宁愿使用不同的约定,为每个人添加一个前缀,如user_id,product_id,photo_id等.当然,所有这些都是自动递增的.
这是我的迁移文件夹中的当前create_users_table.php文件.我定义了user_id来覆盖默认的id选项,这是正确的用法吗?
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
class CreateUsersTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->primary('user_id');
$table->integer('user_id', true);
$table->string('name', 500);
$table->string('email', 500);
$table->string('password', 500);
}
);
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::drop('users');
}
}
Run Code Online (Sandbox Code Playgroud)
我读到我需要添加类似下面的内容,但我不确定在哪里定义,protected $primaryKey因为我的类扩展了Migration而不是Eloquent.
class CreateUsersTable extends Eloquent {
protected $primaryKey = 'user_id';
} …Run Code Online (Sandbox Code Playgroud) 在我使用laravel 5.1构建的web应用程序中,用户可以上传我存储在Amazon S3中的一些敏感文件.后来我希望用户WITH PERMISSION下载此文件.由于我希望进行此身份验证检查,因此我无法使用传统方法下载该文件,只需在S3中直接链接到文件即可.
我的方法:
当用户请求下载时,我的服务器在本地下载文件,然后流式传输给用户.问题:需要很长时间,因为文件有时太大.
为用户提供预先签名的URL,以便直接从S3下载.URL仅在5分钟内有效.问题:如果共享该URL,则任何人都可以在5分钟内下载该URL.
根据这篇文章,将数据直接从S3流式传输到客户端.这看起来很有希望,但我不知道如何实现这一点.
根据这篇文章,我需要:
S3Client对象,因为laravel使用flysystem,我不知道调用什么方法来获取这个对象.也许我需要在我的composer.json中单独包含S3包?我相信其他开发人员之前已经看过这样的问题,并希望得到一些帮助指针.如果有人已经使用laravel直接从S3流向客户端Response::download($pathToFile, $name, $headers),那么我很想听听你的方法.