#実現したいこと
下記イメージのように作業中ボタンを押した時に完了ボタンになり、完了ボタンを押した時に作業中になるような機能追加を考えています。
完成イメージ
#やったこと
単純に画面遷移だけの実装で可能かと考えましたが、私の実装した内容では「作業ボタンを押したら全てのidカラムが完了ボタンになってしまい」上手く行きませんでした。
web.php
<?php /* |-------------------------------------------------------------------------- | 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! | */ Route::get('/', function () { return view('welcome'); }); Route::get('/Todo', 'TodoController@index'); Route::post('/Todo', 'TodoController@create'); Route::group(['middleware' => ['web']], function () { Route::post('/Todo', 'TodoController@create'); }); Route::post('/Todo/{table}', 'TodoController@delete'); Route::post('/done', 'TodoController@done');
TodoController.php
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Http\Requests\CreateTaskRequest; use Illuminate\Support\Facades\DB; use App\Todo; class TodoController extends Controller { public function index(Request $request) { $items = Todo::all(); return view('Todos.index', ['items' => $items]); } public function create(CreateTaskRequest $request) { $todo = new Todo; $form = $request->all(); unset($form['_token']); $todo->timestamps = false; $todo->fill($form)->save(); return redirect('/Todo'); } public function delete(Request $request) { Todo::find($request->table)->delete(); $items = Todo::all(); $items = DB::table('Todos')->orderBy('todo_id', 'asc')->get(); return redirect('/Todo'); } public function done(Request $request) { $items = Todo::all(); return view('Todos.done', ['items' => $items]); } }
views/layouts/index.blade.php
<html> <head> <title>@yield('title')</title> <style> body { font-size: 16pt; color: #999; margin: 5px; } h1 { font-size: 50pt; text-align: right; color: #f6f6f6; margin: -20px 0px -30px 0px; letter-spacing: -4pt; } ul { font-size: 12pt; } hr { margin: 25px 100px; border-top: 1px dashed #ddd; } .menutitle { font-size: 25pt; font-weight: bold; margin: 0px; } .content { margin: 10px; } .footer { font-size: 20pt; margin: 10px; } th { background-color: #999; color: fff; padding: 5px 10px; } td { border: solid 1px #aaa; color: #999; padding: 5px 10px; } task { font-size: 50pt; width: 70px; height: 70px; } </style> </head> <body> <h1>@yield('title')</h1> @section('menubar') <h2 class="menutitle"> Todoリスト</h2> TASKを追加 <br> @if (count($errors) > 0) <div> <ul> @foreach ($errors->all() as $error) <li>{{ $error }}</li> @endforeach </ul> </div> @endif <form action="/Todo" method="post"> {{ csrf_field() }} <input type="text" name="comment" size="70" value="{{old('comment')}}"> <input type="submit" value="追加"> </form> <hr size="1"> <div class="content"> @yield('content') </div> <div class="footer"> @yield('footer') </div> </body> </html>
views/Todos/index.blade.php
@extends('layouts.index') @section('title','Todoリスト') @section('menubar') @parent Todoリスト @endsection @section('content') <table> <tr> <th>ID</th> <th>コメント</th> <th>状態</th> </tr> @foreach ($items as $item) <tr> <td>{{$loop->iteration}}</td> <td>{{$item->comment}}</td> <td> <form action="/done" method="POST"> @csrf <button type="submit"> 作業中 </button> </form> </td> <td> <form action="{{ url('Todo/' . $item->id) }}" method="POST"> @csrf <button type="submit"> 削除 </button> </form> </td> </tr> @endforeach </table> @endsection
views/Todos/done.blade.php
@extends('layouts.index') @section('title','Todoリスト') @section('menubar') @parent Todoリスト @endsection @section('content') <table> <tr> <th>ID</th> <th>コメント</th> <th>状態</th> </tr> @foreach ($items as $item) <tr> <td>{{$loop->iteration}}</td> <td>{{$item->comment}}</td> <td> <form action="/Todo" method="POST"> @csrf <button type="submit"> 完了 </button> </form> </td> <td> <form action="{{ url('Todo/' . $item->id) }}" method="POST"> @csrf <button type="submit"> 削除 </button> </form> </td> </tr> @endforeach </table> @endsection
#質問したいこと
どのように実装していくのが適切なのか教えて頂きたいです。
#環境
laravel 6
MySQL 8
>view.Controller.Routeだけの実装で可能かと考えましたが上手く行きませんでした。
ほぼフレームワークの全てですけど、一体全体どうやったらできなかったんですか?
正直これだけで答えろって無理な話です。
view.Controller.Routeだけの実装で可能かと考えてできなかった人に考え方だけ伝えても出来るように思いません。
それとも「作ってくれ」という作業依頼ですか?
作業依頼かどうかは私には分かりませんが迷惑をかけているのでしたらすみません。
自分で考えれるところは考えて少しづつでも理解を深めていきたいだけなんです。。。
でも、その考えた結果組んだこととか何も提示してないわけですよね。
となると他人は「自分のやり方じゃダメだったから組んでくれ」という風に解釈するわけです。
本当にダメかどうかって見てみないと分かりませんよ。誰にも。
特に「view.Controller.Routeだけの実装で可能か」ってLaravelの根幹部分ほとんど全部出してしまってるじゃないですか。
「これでできない」というのが信じられないので、そこはコードとロジックを見た上で判断する必要があるわけです。
まあ「view.Controller.Routeだけの」って書いてあるだけだとロジックも何もないわけですけど。
回答1件
あなたの回答
tips
プレビュー