cosmicvelocity/lumen-helpers

提高了Lumen和Laravel之间的互操作性。

1.3.3 2018-03-11 08:52 UTC

This package is not auto-updated.

Last update: 2024-09-26 16:41:11 UTC


README

Build Status

提高了Lumen和Laravel之间的互操作性。

自从Lumen从5.2开始专注于提供无状态的API以来,会话等功能已经被移除。然而,虽然处理速度较慢,Lumen也适合用于常规的Web应用开发。

幸运的是,Lumen可以整合Laravel的组件,并重新引入已移除的功能。此库提供了在使用Lumen时缺失的功能。

此外,它支持Lumen 5.1下开发的应用程序的升级,如果你打算将来迁移到Laravel,它可以用于提高实现兼容性。

安装

如果使用composer,可以通过添加以下描述来引入。

{
    "require": {
        "cosmicvelocity/lumen-helpers": ">=1.0"
    }
}

在使用与会话相关的辅助函数时,需要设置Lumen以便可以使用会话。

要启用Lumen 5.4的会话,请按以下示例在bootstrap.php中设置Application。

// Add required alias.
$app->alias('cookie', \Illuminate\Cookie\CookieJar::class);
$app->alias('cookie', \Illuminate\Contracts\Cookie\Factory::class);
$app->alias('cookie', \Illuminate\Contracts\Cookie\QueueingFactory::class);
$app->alias('session', \Illuminate\Session\SessionManager::class);
$app->alias('session.store', \Illuminate\Session\Store::class);
$app->alias('session.store', \Illuminate\Contracts\Session\Session::class);

// Read the configuration file.
// You need to prepare a configuration file similar to Laravel in config/session.php.
$app->configure('session');

$app->withFacades(true, [
    \Illuminate\Support\Facades\Config::class => 'Config'
]);

// Set cookie, Session service provider.
$app->register(\Illuminate\Cookie\CookieServiceProvider::class);
$app->register(\Illuminate\Session\SessionServiceProvider::class);

// Set middleware.
$app->middleware([
    \Illuminate\Cookie\Middleware\EncryptCookies::class,
    \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
    \Illuminate\Session\Middleware\StartSession::class,
    \Illuminate\View\Middleware\ShareErrorsFromSession::class,
]);

如何使用

当前提供的辅助函数如下。

我将执行与Laravel同名辅助函数相同的操作。

  • abort_if
  • abort_unless
  • action
  • app_path
  • asset
  • auth
  • back
  • bcrypt
  • cache
  • cookie
  • csrf_field
  • csrf_token
  • logger
  • method_field
  • mix
  • old
  • policy
  • public_path
  • report
  • session
  • validator

此外,我们提供以下自己的辅助函数。

  • app_with: 一个与makeWith调用兼容的app()辅助函数。从5.4版本开始,你不能再向make传递$parameters,而是使用makeWith进行准备,通过使用app_with,可以通过传递Lumen的请求参数来执行make操作。

  • redirect_with_session: 由于Lumen 5.2及以后的版本中的重定向辅助函数不接管会话,我们提供了redirect_with_session以继承会话。然而,它必须预先构建,例如SessionServiceProvider,并且Lumen中必须启用会话。

    return redirect_with_session(route('index'))
        ->withErrors($errors)
        ->withInput();

    使用redirect_with_session时,你可以期望得到withErrors、withInput等。如果你想要用redirect_with_session替换redirect,可以在bootstrap/app.php中进行如下替换。

    // Define redirect first.
    function redirect($to = null, $status = 302, $headers = [], $secure = null) {
      return redirect_with_session($to, $status, $headers, $secure);
    }
    
    require_once __DIR__ . '/../vendor/autoload.php';