96286


PHP を習得し、最近書籍などをもとに Laravel を学んでいる初心者です。  
参考書で紹介されている Blade テンプレートも使って「名前を入力したら同じ URL
のまま表示が変わり、入力された名前が表示される」というコードを書いたのですが、フォームで送信した文字が表示されません。なお、ローカル環境で確認しています。

### 想定している動作

`http://localhost/laravelapp/hello`にアクセスすると、「お名前を入力してください。」と入力フォームが表示され、テキストボックスに名前を入力し送信ボタンをクリックすると、`http://localhost/laravelapp/hello`のアドレスのまま「こんにちは、<入力した文字列>さん！」

なお、Laravel の`public`を URL からなくすために、下記 Web ページを参考に`public`フォルダーからファイルを移動させています。

[Laravelのドキュメントルートを変更する - Laravel学習帳](https://laraweb.net/environment/347/)

ご教示いただけますと幸いです。

**参考:**  
『PHPフレームワークLaravel入門 第2版』

#### 開発環境

Windows 11 (22H2)  
XAMPP 8.2.4  
Laravel 10.23.1

### 現状のコード

routes/web.php

[code]

    Route::get('hello', 'App\Http\Controllers\HelloControler@index');
    Route::post('hello', 'App\Http\Controllers\HelloControler@post');
    
[/code]

app/Http/Controllers/HelloControler.php

[code]

    class HelloControler extends Controller
    {
        public function index(Request $request) {
            $data = [
                'msg'=>'お名前を入力してください。'
            ];
            return view('hello.index', $data);
        }
        
        public function post(Request $request) {
            $msg = $request->msg;
            $data = [
                'msg'=>'こんにちは、' . $msg . 'さん！'
            ];
            return view('hello.index', $data);
        }
        
    }
    
    
[/code]

resources/views/index.blade.php

[code]

    <p>{{$msg}}</p>
    <form action="" method="post">
        @csrf
        <input type="text" name="msg">
        <input type="submit">
    </form>
    
[/code]


CC BY-SA 4.0
2023-09-18T09:32:11.470
96250
2023-09-20T22:57:36.950
2023-09-19T00:27:14.777
3060
59827
question
php laravel
Laravel で POST 送信しても、表示させると空になる


`$request->msg`を`$request['msg']`に変更すると、POST の値を受け取ることができました。

コントローラーのコード:

[code]

    <?php
    
    namespace App\Http\Controllers;
    
    use Illuminate\Http\Request;
    use Illuminate\Support\Facades\Redis;
    
    class HelloController extends Controller
    {
        public function index() {
            $data = [
                'msg' => 'お名前を入力してください。'
            ];
            return view('index', $data);
        }
        
        public function post(Request $request) {
            $data = [
                'msg' => 'こんにちは、' . $request['msg'] . 'さん！'
            ];
            return view('index', $data);
        }
    }
    
[/code]

参考:  
[LaravelでのPOST/GETの受け取り方法 - Laravel学習帳](https://laraweb.net/knowledge/2141/)


CC BY-SA 4.0
2023-09-20T22:57:36.950
96286
2023-09-20T22:57:36.950
59827
96250
answer