4

Slim Framework をルーターとして、Twig を Template Engine として、Eloquent ORM を使用してデータベースを処理しています。

これらのライブラリのブートストラップを作成しました。

<?php

require_once 'vendor/autoload.php';

/**
 * Laravel Eloquent ORM
 */
use Illuminate\Database\Capsule\Manager as Capsule;
use Illuminate\Events\Dispatcher;
use Illuminate\Container\Container;

$database_capsule = new Capsule;

$database_capsule->addConnection([
    'driver'    => 'mysql',
    'host'      => 'localhost',
    'database'  => 'database',
    'username'  => 'username',
    'password'  => 'password',
    'charset'   => 'utf8',
    'collation' => 'utf8_unicode_ci',
    'prefix'    => '',
]);

$database_capsule->setEventDispatcher(new Dispatcher(new Container));

$database_capsule->setAsGlobal();

$database_capsule->bootEloquent();

/**
 * Twig Template Engine
 */
Twig_Autoloader::register();

$twig_loader = new Twig_Loader_Filesystem('template');

$twig_engine = new Twig_Environment($twig_loader);

そしてルート:

/**
 * Slim Framework
 */
$application = new \Slim\Slim();

$application->get('/', function () use ($twig_engine) {

    $foods = Capsule::table('foods')->get();

    $index = $twig_engine->loadTemplate('index.html');

    echo $index->render(array('foods' => $foods));

});

$application->get('/page/:number', function ($number) use ($twig_engine) {

    $foods = Capsule::table('foods')->get();

    $index = $twig_engine->loadTemplate('index.html');

    echo $index->render(array('foods' => $foods));

});

$application->run();

私が欲しいのは:次の結果をどのようにページ付けできますか:

$foods = Capsule::table('foods')->get();

たとえば、「/」と「/page/1」の「2」ページがあるとします。

そして、各ページで最大30の結果が必要です。

4

3 に答える 3

5

illuminate 4から始めて、このようなことを行うことができます

$application->get('/page/:number', function ($number) use ($twig_engine) {

    $foods = Capsule::table('foods')->skip(30*$number)->take(30)->get();
    $index = $twig_engine->loadTemplate('index.html');

    echo $index->render(array('foods' => $foods));

});

より良い解決策は、Illuminate\Pagination パッケージを含めて、それを動作させることです

Capsule::table('foods')->paginate(5) 

ただし、laravelの外でページネーションクラスをブートストラップする方法がわかりません。

https://github.com/zofe/rapyd-frameworkを見ることを検討してください 。Slim、Twig、Eloquent、Symfony Forms を使用していますが、ページネーションにはカスタム ウィジェットを使用しています。(私は著者です)

于 2013-11-14T18:26:30.590 に答える
3
  1. 開けるcomposer.json
  2. 次の行を必須セクションに追加します。

    "illuminate/pagination":"~5.0"

  3. Ubuntu 14.04 ターミナルを開き、プロジェクトのディレクトリに移動します。コマンドを実行しますcomposer update。ページネーション ライブラリがダウンロードされます。

  4. モデルファイルにこれらの両方の行を追加します

    use Illuminate\Pagination;

    use Illuminate\Pagination\Paginator;

  5. コントローラーにこのコードを配置すると、ページ分割されたデータが取得されます。

    $data = Student::paginate(5);

  6. ビューファイルでページ付けされたリンクを取得するため。

    $students->links();

于 2017-05-24T08:30:18.080 に答える