当前位置: 首页 > 知识库问答 >
问题:

laravel资源控制器-显示方法不工作$id返回值为'show'

章禄
2023-03-14

我是拉威尔的新手,目前在资源控制器CRUD操作部门工作。我已经完成了显示功能,我的前端将从用户那里获取id,我需要使用id显示详细信息。为此,我使用了资源控制器显示功能。问题是,如何返回id?我尝试了以下格式

http://localhost/sbadmin/public/invoice/invoice/show?12http://localhost/sbadmin/public/invoice/invoice/show/12

两者都只返回404。

有人能建议如何写这uri吗?

这是我的网站。php

<?php

Route::prefix('invoice')->group(function() {
Route::get('/createInvoice', 'Invoice\InvoiceController@getAllInvoiceDetails');
Route::post('/addInvoice', 'Invoice\InvoiceController@addInvoice');
Route::post('/checkPhoneNumberAndFetchData', 'Invoice\InvoiceController@checkPhoneNumberAndReturnData');
Route::resource('invoice', 'Invoice\InvoiceManagementController')->only([
'index', 'show'
]);
  Route::get('/searchInvoice','Invoice\InvoiceController@searchInvoice');

Route::get('/viewAllInvoice','Invoice\InvoiceController@viewAllInvoice');
Route::get('/viewInvoicesAsJson','Invoice\InvoiceController@viewInvoicesAsJson');

});

控制器:

  namespace Modules\Invoice\Http\Controllers\Invoice;

  use Illuminate\Routing\Controller;
  use Illuminate\Http\Request;
  use Modules\Invoice\Entities\Invoice;

  class InvoiceManagementController extends Controller
  {
/**
 * Display a listing of the resource.
 *
 * @return \Illuminate\Http\Response
 */
public function index()
{

    return view('invoice::viewinvoices');
}



/**
 * Show the form for creating a new resource.
 *
 * @return \Illuminate\Http\Response
 */
public function create()
{
    //
}

/**
 * Store a newly created resource in storage.
 *
 * @param  \Illuminate\Http\Request  $request
 * @return \Illuminate\Http\Response
 */
public function store(Request $request)
{
    //
}

/**
 * Display the specified resource.
 *
 * @param  int  $id
 * @return \Illuminate\Http\Response
 */
public function show($id)
{
    //return $id;
    $invoices = Invoice::findOrFail($id)->with(['user','events','payments'])->get();
    return view('invoice::invoice');
}

/**
 * Show the form for editing the specified resource.
 *
 * @param  int  $id
 * @return \Illuminate\Http\Response
 */
public function edit($id)
{
    //
}

/**
 * Update the specified resource in storage.
 *
 * @param  \Illuminate\Http\Request  $request
 * @param  int  $id
 * @return \Illuminate\Http\Response
 */
public function update(Request $request, $id)
{
    //
}

/**
 * Remove the specified resource from storage.
 *
 * @param  int  $id
 * @return \Illuminate\Http\Response
 */
public function destroy($id)
{
    //
}

 /**
 * Responds to requests to GET /users/show/1
 */
public function getShow($id)
{
    //
}
}

刀身php:

<div class="card o-hidden border-0 shadow-lg my-5">
  <div class="card-body p-0">
    <!-- Nested Row within Card Body -->
    <div class="row">
      <div class="col-lg-5 d-none d-lg-block bg-register-image"></div>
      <div class="col-lg-7">
        <div class="p-5">
          <div class="text-center">
            <h1 class="h4 text-gray-900 mb-4">Search Invoice</h1>
          </div>
          <form id="form" onsubmit="return OnSubmitForm();" >
            @csrf
            <div class="form-group row">
              <div class="col-sm-6 mb-3 mb-sm-0">
                <input type="text" class="form-control form-control-user" name="invoice_id" id="id" placeholder="Enter Invoice number" >
              </div>

            </div>

            <button type="submit" class="btn btn-primary btn-user btn-block">
              View Invoice
            </button>
            <hr>
            <a href="index.html" class="btn btn-google btn-user btn-block" hidden="">
              <i class="fab fa-google fa-fw"></i> Register with Google
            </a>
            <a href="index.html" class="btn btn-facebook btn-user btn-block" hidden="">
              <i class="fab fa-facebook-f fa-fw"></i> Register with Facebook
            </a>
          </form>
          <div class="text-center" hidden="">
            <a class="small" href="forgot-password.html">Forgot Password?</a>
          </div>
          <div class="text-center" hidden="">
            <a class="small" href="login.html">Already have an account? Login!</a>
          </div>
        </div>
      </div>
    </div>
  </div>
   </div>

  </div> 
 <!-- Bootstrap core JavaScript-->
  <script src="{{ asset('sbadmin/vendor/jquery/jquery.min.js') }}"></script>
  <script src="{{ asset('sbadmin/vendor/bootstrap/js/bootstrap.bundle.min.js') }}"></script>

  <!-- Core plugin JavaScript-->
  <script src="{{ asset('sbadmin/vendor/jquery-easing/jquery.easing.min.js') }}"></script>

  <!-- Custom scripts for all pages-->
  <script src="{{ asset('sbadmin/js/sb-admin-2.min.js') }}"></script>

  <script type="text/javascript">
  function OnSubmitForm()
  {
    $('#form').prop('action',"invoice/show/"+$('#id').val());

   return true;
 }
 </script>

共有3个答案

吕宸
2023-03-14

对于Laravel资源控制器操作,无需添加CRUD操作

GET/invoice, mapped to the index() method,
GET /invoice/create, mapped to the create() method,
POST /invoice, mapped to the store() method,
GET /invoice/{id}, mapped to the show() method,
GET /invoice/{id}/edit, mapped to the edit() method,
PUT/PATCH /invoice/{id}, mapped to the update() method,
DELETE /invoice/{id}, mapped to the destroy() method.

并尝试访问您的show路由操作,如下所示:

http://localhost/sbadmin/public/invoice/invoice/12
方树
2023-03-14

首先,将路由中的前缀更改为:

Route::group(['prefix' => 'invoice', 'as' => 'invoice.'], function(){

然后在脚本中:

function OnSubmitForm()
  {
    $('#form').prop('action',"invoice/invoice/"+$('#id').val());

   return true;
 }

我希望这能奏效。

洪承天
2023-03-14

您不需要在url中追加show

Route::resource('invoice', 'Invoice\InvoiceManagementController')->only([
'index', 'show'
]);

http://localhost/sbadmin/public/invoice/invoice/show/12-

现在你的网址看起来像。

http://localhost/sbadmin/public/invoice/invoice/12 -

在这里,我将详细阐述。

得到|http://localhost/sbadmin/public/invoice/invoice |指数法

发布|http://localhost/sbadmin/public/invoice/invoice|存储方法

get|http://localhost/sbadmin/public/invoice/invoice/12|show方法。

 类似资料:
  • 对于控制器中的show($id)、edit($id)方法,它必须是数据库表中的“id”列吗 我想用数据库表中“post_id”列的值替换$id,但它引发错误: 如何修复它? 示例代码: 数据库表: id(int)、post_id(varchar32)、post_标题(varchar32)、post_内容(text) 路线: 路由::资源('posts','PostsController'); Po

  • 我想在ArrayList中添加一个名称,但是当我调用put方法时,console.log显示了一个get方法。 当我调用url时 但它应该是put方法,而不是get方法,这有什么错?

  • 你好,我是拉威尔的新手,也许这对你们来说太傻了。在laravel 8中,路由web。php我创建了一条如下的路线: 我想问的是,我们也可以从回调视图返回控制器吗?所以在路由 /editprofile中,第二个参数不是'App\Http\Controller\SiteController@edit_profile',而是一个回调函数,如路由'/home'。 但是它返回错误哈哈。假设我不想用__con

  • 资源控制器 资源控制器可以让你轻松的创建RESTFul资源控制器,可以通过命令行生成需要的资源控制器,例如: // 生成index模块的Blog资源控制器 php think make:controller index/Blog 或者使用完整的命名空间生成 php think make:controller app\index\controller\Blog 然后你只需要为资源控制器注册一个资源路

  • 问题内容: 这个问题已经在这里有了答案 : 7年前关闭。 可能重复: 如何从PHP的MySql响应中“回显”“资源ID#6”? 我是php和SQL的新手,我正在尝试使php页面列出表中的枚举数。我正在使用此代码,但它返回资源ID#2: 问题答案: 因为执行时会获得mysql资源。 使用类似的方法来获取下一行。它返回一个以列名作为索引的数组。就您而言,可能是。 这是您的代码段的修复程序和一些小改进:

  • 我的整个laravel控制器都坏了。当我对这个控制器index()执行get请求时,它工作得非常好。但当我向这个控制器发出post请求以存储()时,它就不起作用了。 当我试图解决问题时,我开始注释代码或使用dd()。然后很快注意到,当我注释掉我的整个控制器时,它对错误没有任何改变。(或者当我dd($user_id)时,什么都没改变)。 我的错误: 路由文件: 我的控制器: 我的post请求通过ax