LARAVEL: semua elemen dalam foreach mempunyai id 1, yang menjadikannya mustahil untuk memadamkannya
P粉064448449
P粉064448449 2024-01-28 23:17:43
0
1
463

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粉064448449
P粉064448449

membalas semua(1)
P粉403549616

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();
}
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!