在php中 action,关于php:Laravel表单在action属性中包含输入

博客内容涉及在PHP Laravel框架中如何处理搜索路由和视图。作者原本为ID和文本搜索分别设置了路由,但想改为单一搜索路由,同时根据输入内容决定执行哪种搜索并返回相应视图。讨论了是否需要JavaScript来改变表单的action属性,以及如何通过控制器判断搜索类型并呈现不同视图。解决方案包括使用JavaScript动态修改URL和在控制器中根据搜索条件选择视图。
摘要由CSDN通过智能技术生成

拉拉夫5.0

PHP 5.4.45

我有一条形状像这样的路线:

/app/Http/routes.php

Route::get('/clients/search/{id}', 'ClientController@searchById')->where('id', '[0-9]+');

Route::get('/clients/search/{text}', 'ClientController@searchByText')->where('text', '[a-zA-Z]');

我不会在这里打印视图,而只是搜索确切的客户端(案例ID)或前10个客户端(案例文本)。

然后,我想创建一个搜索表单。我创建了路线:

/app/Http/routes.php

// Route::get('/clients/search/{id}', 'ClientController@searchById')->where('id', '[0-9]+');

// Route::get('/clients/search/{text}', 'ClientController@searchByText')->where('text', '[a-zA-Z]');

Route::get( '/clients/search', 'ClientController@search');

此路线的控制器:

/app/Http/Controllers/ClientController.php

namespace App\Http\Controllers;

use App\Http

equests;

use App\Http\Controllers\Controller;

use DB;

class ClientController extends Controller {

// Controllers for the 'searchById' and 'searchByText'

public function search() {

return view('client.search.search', [

'title'     =>  'Client search form',

'title_sub' =>  ''

]);

}

}

以及此搜索表单的视图:

/ressources/view/client/search/search.blade.php

在提交之前,如何将输入作为表单的action属性的一部分传递?关键是能够发出这类请求:

/ clients / search / 26

/ clients / search / Mike%20%Folley

/ clients / search /巴黎

因此,我的控制器可以处理此路由。有什么办法吗?还是应该选择JavaScript解决方案(这让我有些难过)?

如果要更改表单操作属性,则必须使用JavaScript。 但是,为什么您确实需要它呢? 为了帮助您的路线在两个搜索控制器之间做出决定? 最好有一个单一的搜索控制器,它的代码内部将根据搜索词的类型决定是按ID还是按名称搜索?

取决于它是文本还是id,我的视图是不一样的:如果是id,则每个客户端在数据库中都有唯一的ID,则我获取确切的客户端信息,因此视图是不同的。 如果是文本搜索,则可能有多个与此文本匹配的客户端(例如:搜索" mike",数据库中可能有多个" Mike",因此我以数组而不是特定于客户端的视图获取它们) 。 我设法使用JavaScript进行搜索。 也许如果我以其他方式解决问题,可以使用表格参数来管理。 我想太棘手了。

一个控制器可以返回不同的视图。

是的,在发送请求URL之前,您需要JavaScript来修改它:)。 不需要表单标签,像这样的香草js方法就足够了:

Submit

function search() {

window.location='/search/' +

encodeURIComponent(document.getElementById('search').value);

}

您可以并且应该只使用一条路线,然后在控制器的方法中确定要搜索的内容和返回的视图。 路由应包含最少数量的逻辑。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值