cari

Rumah  >  Soal Jawab  >  teks badan

LARAVEL: semua elemen dalam foreach mempunyai id 1, yang menjadikannya mustahil untuk memadamkannya

Keadaan saya sangat sukar. Saya sedang membina klon senarai kelahiran menggunakan pengikis, tetapi saya mengalami kesukaran mengekodkannya kerana saya tidak berpengalaman. Saya berjaya mencipta halaman pentadbir dengan berbilang borang untuk memasukkan tapak, kategori dan borang pautan di mana anda boleh menentukan pautan mana yang harus dirangkak dan ke tapak dan kategori mana ia akan dipautkan. Walaubagaimanapun, tambah macam ni boleh, tapi padam tak boleh..

Tapak, kategori dan pautan saya dipaparkan pada halaman pentadbir saya, dengan butang ambil dan padam untuk setiap elemen. Apabila saya memadamkan item terakhir dalam baris, ia memadamkan elemen pertama. Apabila saya ingin memadam sesuatu yang lain, laravel membuang pengecualian dan ia cuba membaca harta itu pada null yang bermaksud ia tidak wujud lagi. Apabila saya membuang sebelum mengalih keluar fungsi dan mati, setiap item dalam setiap senarai mempunyai id "1". Itulah sebabnya ia memadamkan item pertama berturut-turut. Bolehkah sesiapa membantu saya?

Saya rasa ini kerana id yang meminta untuk memadam item itu diambil dari url dan id yang diberikan dalam url adalah id pengguna iaitu 1. Jadi jika sesiapa boleh memberi saya petunjuk untuk memastikan saya boleh memberikan ID pengguna dengan cara yang berbeza. beritahu saya! Kod saya:

Pengawal Pengurusan:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\Website;
use App\Models\Category;
use App\Models\Link;
use Goutte\Client;


class AdminController extends Controller
{
    public function showAdmin($id)
    {

        $categories = Category::all();
        $websites = Website::all();
        $links = Link::all();
        return view('admin', compact('categories', 'websites', 'links'));
    }

    public function storeWeb(Request $request)
    {
            $web = Website::create([
                'title' => $request->input('site'),
                'url' => $request->input('url')
            ]);
        return back();
    }

    public function destroyWeb(Request $request, $id)
    {
        $web = Website::find($id);
        $web->delete();
        return back();
    }

    public function storeCat(Request $request)
    {
        $cat = Category::create([
            'title' => $request->input('title')
        ]);
        return back();
    }

    public function destroyCat(Request $request, $id)
    {
        $cat = Category::find($id)->first();
        $cat->delete();
        return back();
    }

    public function storeLink(Request $request) 
    {
        $link = Link::create([
            'url' => $request->input('scrapeUrl'),
            'main_filter_selector' => $request->input('filter'),
            'website_id' => $request->input('website_id'),
            'category_id' => $request->input('category_id'),
        ]);
        return back();
    }

    public function destroyLink(Request $request, $id)
    {
        $link = Link::find($id);
        dd($link);
        $link->delete();
        return back();
    }


    public function scrape(Request $request)
    {
        $link = Link::find($request->link_id);

        $scraper = new Scraper (new Client());

        $scraper->handle($link);

        if($scraper->status == 1) {
            return response()->json(['status' => 1, 'msg' => 'Scraping done']);
        } else {
            return response()->json(['status' => 2, 'msg' => $scraper->status]);
        };

    }
}

Halaman pengurusan saya:

<body class="relative min-h-screen">
    @include('partials.header')
   <main class="pb-20">
       <div class="text-center m-auto text-2xl p-4 w-fit border-b">
           <h2>Welkom <strong>{{ auth()->user()->name }}</strong></h2>
       </div>
       <div class="gap-10 m-auto xl:w-3/5">
            <div class="mt-8">
                <h3 class="bg-gray-100 p-4"><strong>Winkels</strong></h3>
                <div class="">
                    <div class="p-4 m-auto">
                        <form action="{{ route('newWeb', Auth()->user()) }}" method="POST">
                            @csrf
                            <div class="flex wrap flex-row items-center justify-left my-4">
                                <label for="shop" class="w-2/12">Webshop:</label>
                                <input type="text" required class="w-7/12 h-fit p-2 focus:outline-sky-500 rounded bg-slate-100" name="site" id="titel" placeholder="Dreambaby">
                            </div>
                            <div class="flex wrap flex-row items-center justify-left">
                                <label for="url" class="w-2/12">
                                   Voeg een url toe:
                                </label>
                                <input type="url" required class="w-7/12 h-fit p-2 focus:outline-sky-500 rounded bg-slate-100" name="url" id="url" placeholder="http://dreambaby.com/">
                                <button class="w-fit bg-green-400 h-fit p-2 rounded hover:bg-green-600 hover:text-white mx-2" name="shop" value="add" type="submit">Voeg link toe</button>
                            </div>
                        </form>
                            <div class="flex wrap flex-row items-center mt-12">
                                <div class="flex flex-row flex-wrap w-full">
                                    <table class="table-auto">
                                        @foreach ($websites as $web)
                                        <form action="{{ route('delWeb', Auth()->user()) }}" method="POST">
                                            @csrf
                                            @method('DELETE')
                                            <tr class="border-b">
                                                <td class="p-4">{{ $web->title }}</td>
                                                <td class="p-4">{{ $web->id }}</td>
                                                <td class="p-4"><button class="w-fit h-full p-2 bg-red-400 h-fit rounded hover:bg-red-600 hover:text-white block m-auto" type="submit">Verwijderen</button>
                                                </td>
                                            </tr>
                                        </form>
                                        @endforeach
                                    </table>
                                </div>
                            </div>
                    </div>
                </div>   
            </div>
        </div>           
        <div class="gap-10 m-auto xl:w-3/5">
            <div class="mt-8">
                <h3 class="bg-gray-100 p-4"><strong>Categorieën</strong></h3>
                <div class="mt-4">
                    <div class="p-4 m-auto">
                        <form action="{{ route('newCat', Auth()->user()) }}" method="POST">
                            @csrf
                            <div class="flex wrap flex-row items-center justify-left">
                                <label for="url" class="w-2/12">
                                   Voeg een categorie toe:
                                </label>
                                <input type="text" required class="w-7/12 h-fit p-2 focus:outline-sky-500 rounded bg-slate-100" name="title" id="cat" placeholder="Eten en Drinken">
                                <button class="w-fit bg-green-400 h-fit p-2 rounded hover:bg-green-600 hover:text-white mx-2" name="category_submit" type="submit">toevoegen</button>
                            </div>
                        </form>
                            <div class="flex wrap flex-row items-center mt-12">
                                <div class="flex flex-row flex-wrap w-full">
                                    <table class="table-auto">
                                        @foreach ($categories as $category)
                                        <form action="{{ route('delCat', Auth()->user()), $category->id }}" id="{{ $category->id }}" method="POST">
                                            @csrf
                                            @method('DELETE')
                                            <tr class="border-b">
                                                <td class="p-4">{{ $category->title }}</td>
                                                <td class="p-4">{{ $category->id }}</td>
                                                <td class="p-4"><button class="w-fit h-full p-2 bg-red-400 h-fit rounded hover:bg-red-600 hover:text-white block m-auto" type="submit">Verwijderen</button>
                                                </td>
                                            </tr>
                                        </form>
                                        @endforeach
                                    </table>
                                </div>
                            </div>
                    </div>
                </div>
            </div>
        </div>
        <div class="gap-10 m-auto xl:w-3/5">
            <div class="mt-8">
                <h3 class="bg-gray-100 p-4"><strong>Scrapes</strong></h3>
                <div class="">
                    <div class="p-4 m-auto">
                        <form action="{{ route('newLink', Auth()->user()) }}" method="POST">
                            @csrf
                            <div class="flex wrap flex-row items-center justify-left my-4">
                                <label for="scrape" class="w-2/12">Url:</label>
                                <input type="text" required class="w-7/12 h-fit p-2 focus:outline-sky-500 rounded bg-slate-100" name="scrapeUrl" id="scrapetitel" placeholder="https://www.thebabyscorner.be/nl-be/baby_eten_en_drinken/">
                            </div>
                            <div class="flex wrap flex-row items-center justify-left my-4">
                                <label for="text" class="w-2/12">
                                   Filter:
                                </label>
                                <input type="text" required class="w-7/12 h-fit p-2 focus:outline-sky-500 rounded bg-slate-100" name="filter" id="url" placeholder=".1-products-item">
                            </div>
                            <div class="flex wrap flex-row items-center justify-left my-4">
                                <label for="webpicker" class="w-2/12">Winkel:</label>
                                <select name="website_id" id="" class="w-7/12 h-fit p-2 focus:outline-sky-500 rounded bg-slate-100">
                                    <option value="#" disabled selected>Kies je winkel</option>
                                    @foreach ($websites as $web)
                                        <option value="{{ $web->id }}" >{{ $web->title }}</option>
                                    @endforeach
                                </select>
                            </div>
                            <div class="flex wrap flex-row items-center justify-left my-4">
                                <label for="webpicker" class="w-2/12">Categorie:</label>
                                <select name="category_id" id="" class="w-7/12 h-fit p-2 focus:outline-sky-500 rounded bg-slate-100">
                                    <option value="#" disabled selected>Kies je categorie</option>
                                    @foreach ($categories as $cat)
                                        <option value="{{ $cat->id }}" >{{ $cat->title }}</option>
                                    @endforeach
                                </select>
                                <button class="w-fit bg-green-400 h-fit p-2 rounded hover:bg-green-600 hover:text-white mx-2" type="submit" name="scrape_submit">toevoegen</button>
                            </div>
                        </form>
                        <div class="flex wrap flex-row items-center mt-12 w-full">
                            <div class="flex flex-row flex-wrap w-full">
                                <form action="{{ route('delLink', Auth()->user()) }}" method="POST">
                                    @csrf
                                    @method('DELETE')
                                    <table class="table-auto w-full">
                                        <tr class="bg-slate-300">
                                            <td class="p-4"><strong>Url</strong></td>
                                            <td class="p-4"><strong>Filter selector</strong></td>
                                            <td class="p-4"><strong>Website</strong></td>
                                            <td class="p-4"><strong>Categorie</strong></td>
                                            <td></td>
                                            <td></td>

                                        </tr>
                                        @foreach ($links as $link)
                                            <tr data-id="{{ $link->id }}" class="">
                                                <td class="p-4 border-r">{{ $link->url }}</td>
                                                <td class="p-4 border-r">{{ $link->main_filter_selector }}</td>
                                                <td class="p-4 border-r">{{ $link->website->title }}</td>
                                                <td class="p-4 border-r">{{ $link->category->title }}</td>
                                                <td class="p-4 border-r"><button class="w-fit bg-green-400 h-fit p-2 rounded hover:bg-green-600 hover:text-white block m-auto" type="submit">Scrape</button></td>
                                                <td class="p-4"><button class="w-fit h-full p-2 bg-red-400 h-fit rounded hover:bg-red-600 hover:text-white block m-auto" type="submit">Verwijderen</button>
                                                </td>
                                            </tr>
                                        @endforeach
                                    </table>
                                </form>
                            </div>
                        </div>
                </div>
            </div>
        </div>
   </main>
   @include('partials.footer')
</body>

Laluan saya:

<?php

use Illuminate\Support\Facades\Route;

use App\Http\Controllers\HomeController;
use App\Http\Controllers\DashController;
use App\Http\Controllers\ListviewController;
use App\Http\Controllers\NewlistController;
use App\Http\Controllers\BabyController;
use App\Http\Controllers\ScrapeController;
use App\Http\Controllers\AdminController;
use App\Http\Controllers\ItemsController;

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

require __DIR__.'/auth.php';

Route::get('/', [HomeController::class, 'home'])->name('home');
Route::get('/home', [HomeController::class, 'home']);

Route::get('/listview', [ListviewController::class, 'listview'])
    ->name('lists');





Route::middleware('auth')->group (function () 

{   

    Route::get('/create', [NewlistController::class, 'newlist'])
        ->name('create');

    Route::get('/dashboard/{role}/{id?}', [DashController::class, 'dashboard'])
        ->name('dashboard');

    Route::post('/dashboard/{role}/{id}', [NewlistController::class, 'store']);

    Route::get('/dashboard/{user_id}/{baby}', [BabyController::class, 'show'])
        ->name('baby');

    Route::get('/dashboard/{user_id?}/{baby}/catalogus', [ScrapeController::class, 'show']);


    Route::get('/admin/{id}', [AdminController::class, 'showAdmin'])
        ->name('admin');

    Route::post('/admin/{id}/websites/', [AdminController::class, 'storeWeb'])
        ->name('newWeb');

    Route::delete('/admin/{id}/websites/', [AdminController::class, 'destroyWeb'])
        ->name('delWeb');
 
    Route::post('/admin/{id}/categories/', [AdminController::class, 'storeCat'])
        ->name('newCat');

    Route::delete('/admin/{id}/categories/', [AdminController::class, 'destroyCat'])
        ->name('delCat');

    Route::post('/admin/{id}/links/', [AdminController::class, 'storeLink'])
        ->name('newLink');

    Route::delete('/admin/{id}/links/', [AdminController::class, 'destroyLink'])
        ->name('delLink');

});

P粉064448449P粉064448449290 hari yang lalu515

membalas semua(1)saya akan balas

  • P粉403549616

    P粉4035496162024-01-29 16:41:58

    Ganti kod ini

    @csrf @method('DELETE') @foreach ($links as $link) @endforeach
    Url Filter selector Website Categorie
    {{ $link->url }} {{ $link->main_filter_selector }} {{ $link->website->title }} {{ $link->category->title }}

    Dengan ini

    
        @foreach ($links as $link)
        
        @endforeach
    
    Url Filter selector Website Categorie
    {{ $link->url }} {{ $link->main_filter_selector }} {{ $link->website->title }} {{ $link->category->title }}
    @csrf @method('DELETE')

    Kaedah destroyLink() anda harus mengandungi ini

    public function destroyLink(Request $request)
    {  
        $id = $request->id;
        $link = Link::find($id);
        $link->delete();
        return back();
    }

    balas
    0
  • Batalbalas