首页 > 解决方案 > 为什么 old() 方法在 Laravel Blade 中不起作用?

问题描述

我的环境是 Laravel 6.0 和 PHP 7.3。我想在文本字段中显示旧的搜索值。但是,该old()方法不起作用。搜索后,搜索的旧值消失了。为什么不显示旧值?我研究过,在大多数情况下,你可以使用redirect()->withInput()但我不想使用redirect(). 我更喜欢使用 view()。方法

控制器

class ClientController extends Controller
{
    public function index()
    {
        $clients = Client::orderBy('id', 'asc')->paginate(Client::PAGINATE_NUMBER);

        return view('auth.client.index', compact('clients'));
    }

    public function search()
    {
        $clientID = $request->input('clientID');
        $status = $request->input('status');
        $nameKana = $request->input('nameKana');
        $registerStartDate = $request->input('registerStartDate');
        $registerEndDate = $request->input('registerEndDate');

        $query = Client::query();
        if (isset($clientID)) {
            $query->where('id', $clientID);
        }
        if ($status != "default") {
            $query->where('status', (int) $status);
        }
        if (isset($nameKana)) {
            $query->where('nameKana', 'LIKE', '%'.$nameKana.'%');
        }
        if (isset($registerStartDate)) {
            $query->whereDate('registerDate', '>=', $registerStartDate);
        }
        if (isset($registerEndDate)) {
            $query->whereDate('registerDate', '<=', $registerEndDate);
        }
        $clients = $query->paginate(Client::PAGINATE_NUMBER);

        return view('auth.client.index', compact('clients'));
    }
}

路线

Route::get('/', 'ClientController@index')->name('client.index');
Route::get('/search', 'ClientController@search')->name('client.search');

标签: laravellaravel-6

解决方案


更改加载视图的方式并将数组作为参数传递。

// Example:
// Create a newarray with new and old data
$dataSet = array (
    'clients'           => $query->paginate(Client::PAGINATE_NUMBER),
    // OLD DATA
    'clientID'          => $clientID,
    'status'            => $status,
    'nameKana'          => $nameKana,
    'registerStartDate' => $registerStartDate,
    'registerEndDate'   => $registerEndDate
);

// sent dataset
return view('auth.client.index', $dataSet);

然后您可以在视图中将它们作为变量访问,$registerStartDate但最好先使用该isset()方法检查它是否存在。

例子<input type='text' value='@if(isset($registerStartDate)) {{registerStartDate}} @endif />


推荐阅读