小编Ben*_*aar的帖子

中间件中的$ request-> route()为空,如何通过路由参数进行过滤?

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)

但这显然比按名称引用参数要脆弱得多.我在这里错过了什么?谢谢!

laravel

11
推荐指数
1
解决办法
2756
查看次数

Laravel 5.1:迁移现有数据库

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 eloquent laravel-5.1

7
推荐指数
1
解决办法
3488
查看次数

使用Laravel从Web服务器流式传输Amazon S3对象

在我使用laravel 5.1构建的web应用程序中,用户可以上传我存储在Amazon S3中的一些敏感文件.后来我希望用户WITH PERMISSION下载此文件.由于我希望进行此身份验证检查,因此我无法使用传统方法下载该文件,只需在S3中直接链接到文件即可.

我的方法:

  1. 当用户请求下载时,我的服务器在本地下载文件,然后流式传输给用户.问题:需要很长时间,因为文件有时太大.

  2. 为用户提供预先签名的URL,以便直接从S3下载.URL仅在5分钟内有效.问题:如果共享该URL,则任何人都可以在5分钟内下载该URL.

  3. 根据这篇文章,将数据直接从S3流式传输到客户端.这看起来很有希望,但我不知道如何实现这一点.

根据这篇文章,我需要:

  1. 注册流包装器 -这是我的第一个问题,因为我不知道如何获取S3Client对象,因为laravel使用flysystem,我不知道调用什么方法来获取这个对象.也许我需要在我的composer.json中单独包含S3包?
  2. 禁用输出缓冲 -我是否需要在laravel中执行此操作或laravel已经处理过它?

我相信其他开发人员之前已经看过这样的问题,并希望得到一些帮助指针.如果有人已经使用laravel直接从S3流向客户端Response::download($pathToFile, $name, $headers),那么我很想听听你的方法.

amazon-s3 laravel laravel-5 flysystem

6
推荐指数
1
解决办法
2815
查看次数