【Laravel】bootstrapの適用の仕方がわからない
解決したいこと
ページネーションで使うリンクのスタイルにBootstrapのものを適用させるには、
どうすればいいか教えてください。
Illuminate\Pagination\AbstractPaginator::defaultView("pagination::bootstrap-4");
参考書には、/bootstrap/app.phpのreturn $appの前にこの文追加するように書いてあったのですがLaravelのバージョン11ではreturn $appの文がなくなっていて書く場所がわからない。
発生している問題・エラー
該当するソースコード
web.php
<?php
use App\Http\Controllers\HelloController;
use Illuminate\Support\Facades\Route;
Route::get('hello',[HelloController::class,'index']);
HelloController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Pagination\MyPaginator;
use App\Models\Person;
class HelloController extends Controller
{
public function index(Request $request)
{
$id = $request->query('page');
$msg = 'show page: ' . $id;
$result = Person::paginate(3);
$paginator = new MyPaginator($result);
$data = [
'msg' => $msg,
'data' => $result,
'paginator' => $paginator,
];
return view('hello.index', $data);
}
}
index.blade.php
<!DOCTYPE html>
<html lang="ja">
<head>
<title>Index</title>
<link href ="/css/app.css" rel="stylesheet">
</head>
<body>
<h1>Hello/Index</h1>
<p>{{$msg}}</p>
<ul>
@foreach ($data as $item)
<li>{{$item->name}} [{{$item->mail}},{{$item->age}}]</li>
@endforeach
</ul>
{!! $paginator->link() !!}
</body>
</html>
Person.php
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Person extends Model
{
use HasFactory;
}
MyPaginator.php
<?php
namespace App\Http\Pagination;
use Illuminate\Contracts\Pagination\Paginator;
class MyPaginator
{
private $paginator;
public function __construct(Paginator $paginator)
{
$this->paginator = $paginator;
}
public function link()
{
$prev = $this->paginator->currentPage() == 1 ? 'disabled' : '';
$next = $this->paginator->currentPage() == $this->paginator->count() ? 'disabled' : '';
$result = '<ul class = "pagination" role = "navigation" >';
$result .= '<li class = "page-item ' . $prev . ' "><a class = "page-link" href = " '. $this->paginator->previousPageUrl() . '">←前のページ</a></li>';
$result .= '<li class = "page-item '. $next .'"><a class = "page-link '. $this->paginator->nextPageUrl() .'">次のページ→</a></li>';
$result .= '</ul>';
return $result;
}
}
app.php
<?php
use Illuminate\Foundation\Application;
use Illuminate\Foundation\Configuration\Exceptions;
use Illuminate\Foundation\Configuration\Middleware;
use App\Http\Middleware\MyMiddleware;
return Application::configure(basePath: dirname(__DIR__))
->withRouting(
web: __DIR__.'/../routes/web.php',
commands: __DIR__.'/../routes/console.php',
health: '/up',
)
->withMiddleware(function (Middleware $middleware) {
$middleware->append(MyMiddleware::class);
})
->withExceptions(function (Exceptions $exceptions) {
//
})->create();
自分で試したこと
Illuminate\Pagination\AbstractPaginator::defaultView("pagination::bootstrap-4");
参考書には、/bootstrap/app.phpのreturn $appの前にこの文追加するように書いてあったのですがLaravelのバージョン11ではreturn $appの文がなくなっていて書く場所がわからない。
0