【问题标题】:The route I made suddenly added the "um"我做的路线突然加了“嗯”
【发布时间】:2019-09-18 17:26:23
【问题描述】:

我正在制作一个资源控制器。这是我的代码。 api.php:

Route::group([ 'prefix' => 'admin', 'namespace' => 'Admin'], function () {


Route::resource('penyedia', 'PenyediaController');

});

以下是控制器 PenyediaController.php 的内容:

<?php

namespace App\Http\Controllers\Admin;

use App\Exceptions\InvalidRouteException;
use App\Http\Requests\ValidatePenyedia;
use App\Http\Requests\ValidateList;
use App\Models\Penyedia;
use App\Http\Controllers\Controller;

class PenyediaController extends Controller
{
/**
 * Penyedia model.
 *
 * @var Penyedia
 */
private $penyedia;

/**
 * PenyediaController constructor.
 *
 * @param Penyedia $penyedia
 */
public function __construct(Penyedia $penyedia)
{
    $this->penyedia = $penyedia;
}

/**
 * Display a listing of the Penyedia.
 *
 * @param ValidateList $request
 * @return \Illuminate\Http\Response
 */
public function index(ValidateList $request)
{
    $validated = $request->validated();

    $filter = array_key_exists('filter', $validated) ? $validated['filter'] : [];
    $keyword = array_key_exists('keyword', $validated) ? $validated['keyword'] : null;

    $datatable = array_key_exists('per_page', $validated) ?
        $this->penyedia->datatable($filter, $keyword)->paginate($validated['per_page'])
        :
        $this->penyedia->datatable($filter, $keyword)->get();

    return response()->json([
        'error' => false,
        'data' => $datatable
    ]);
}

/**
 * Show the form for creating a new Penyedia.
 *
 * @return void
 * @throws InvalidRouteException
 */
public function create()
{
    throw new InvalidRouteException();
}

/**
 * Store a newly created Penyedia in storage.
 *
 * @param  \Illuminate\Http\Request  $request
 * @return \Illuminate\Http\Response
 */
public function store(ValidatePenyedia $request)
{
    $validated = $request->validated();

    $this->penyedia = $this->penyedia->create($this->penyedia->prepareData($validated));

    return response()->json([
        'error' => false,
        'data' => $this->penyedia->output()
    ]);
}

/**
 * Display the specified Penyedia.
 *
 * @param int $id
 * @return void
 * @throws InvalidRouteException
 */
public function show(Penyedia $penyedia)
{
    //dd('z');
    dd($penyedia->nama);
    throw new InvalidRouteException();
}

/**
 * Show the form for editing the specified Penyedia.
 *
 * @param int $id
 * @return void
 * @throws InvalidRouteException
 */
public function edit($id)
{
    throw new InvalidRouteException();
}

/**
 * Update the specified Penyedia in storage.
 *
 * @param ValidatePenyedia $request
 * @param Penyedia $penyedia
 * @return \Illuminate\Http\Response
 */
public function update(Penyedia $penyedia)
{
    dd($penyedia->id);
    //dd("z");
    $validated = $request->validated();
    //dd("hehe");
    dd($penyedia);
    $penyedia->update($this->penyedia->prepareData($validated));
    dd($this->penyedia->prepareData($validated));
    return response()->json([
        'error' => false,
        'data' => $penyedia->output()
    ]);
}

/**
 * Remove the specified Penyedia from storage.
 *
 * @param Penyedia $penyedia
 * @return \Illuminate\Http\Response
 * @throws \Exception
 */
public function destroy(Penyedia $penyedia)
{
    $penyedia->delete();

    return response()->json([
        'error' => false,
        'data' => $penyedia->output()
    ]);
}
}

这是 Penyedia.php 的内容:

<?php

namespace App\Models;

use App\Models\User;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;

class Penyedia extends Model
{
use SoftDeletes;

protected $table = 'penyedia';


protected $fillable = [
    'nama', 'penanggung_jawab', 'deskripsi', 'category', 'user_id', 'kontak'
];

protected $dates = ['deleted_at'];

/**
 * Relation to User.
 *
 * @return \Illuminate\Database\Eloquent\Relations\BelongsTo
 */

public function scopeDatatable($query, $filters = [], $keyword = null){
   // dd("sampesini");
    foreach ($filters as $filter) {
        $query->orderBy($filter['field'], $filter ['order']);
    }

    if ($keyword) {
        $query->where('nama', 'LIKE', '%' . $keyword . '%')
              ->orWhere('deskripsi', 'LIKE', '%' . $keyword . '%')
              ->orWhere('penanggung_jawab', 'LIKE', '%' . $keyword . '%')
              ->orWhere('kontak', 'LIKE', '%' . $keyword . '%');
    }

    //return $query->select('id', 'nama');
     return $query->with(['user:id,name'])->select('id', 'nama', 'penanggung_jawab', 'deskripsi', 'category', 'user_id', 'kontak');
}

public function prepareData($data)
{
    return [
        'nama' => $data['nama'] ? $data['nama'] : '',
        'penanggung_jawab' => isset($data['penanggung_jawab']) ? $data['penanggung_jawab'] : '',
        'deskripsi' => isset($data['deskripsi']) ? $data['deskripsi'] : '',
        'category' => isset($data['category']) ? $data['category'] : '',
        'user_id' => isset($data['user_id']) ? $data['user_id'] : '',
        'kontak' => isset($data['kontak']) ? $data['kontak'] : '',
    ];
}

public function output()
{
    return $this->with(['user:id,name'])->select('id', 'nama', 'penanggung_jawab', 'deskripsi', 'category', 'user_id', 'kontak')->first();
}
public function user()
{
    return $this->belongsTo(User::class);
}

/**
 * Relation to Beasiswa.
 *
 * @return \Illuminate\Database\Eloquent\Relations\HasMany
 */
public function beasiswa()
{
    return $this->hasMany(Beasiswa::class);
}



}

然后当我打开 cmd 然后我输入 php artisan route: list 突然在路由器的参数中添加了“嗯”。怎么会这样?截图如下:

https://i.imgur.com/kZLUiGm.png

【问题讨论】:

  • 该框架对单数和复数应该如何看待事物有意见,并假设单词 penyedia 是复数(如 media)并使其单数(如 medium)。至于如何禁用这个暂时还没有发现。
  • @SamiKuhmonen protected $table = 'my_table';在模型中?

标签: php laravel controller routing


【解决方案1】:

我找到了解决方案,我只是像这样编辑我的路线:

Route::resource('penyedia', 'PenyediaController', [
    'parameters' => ['penyedia' => 'penyedia']
]);

我的参数又回到了'penyedia'

【讨论】:

    猜你喜欢
    • 2018-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-20
    • 1970-01-01
    • 2013-08-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多