【问题标题】:How to display value in html tag from laravel如何在laravel的html标签中显示值
【发布时间】:2021-08-23 19:33:35
【问题描述】:

我从未使用过 laravel,对此一无所知。我用它来上传文件到谷歌驱动器。现在我有一个上传文件的文件'web.php'。

<?php

use Illuminate\Support\Facades\Route;
use Illuminate\Http\Request;
Route::get('/', function () {
    return view('welcome');
});

Route::post('/upload', function (Request $request) {
    $name=$request->file("thing")->getClientOriginalName();
    Storage::disk("google")->putFileAs("",$request->file("thing"),$name);
})->name("upload");

有HTML代码的文件是这样的:


<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">

        <title>Google drive integration in laravel</title>
    <!-- CSS only -->
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-+0n0xVW2eSR5OomGNYDnhzAbDsOXxcvSN1TPprVMTNDbiYZCxYbOOl7+AMvyTG2x" crossorigin="anonymous">
    </head>
    <body>
        <div class="container">
            <div class="row">
                <div class="col-12">
    
                <br><br><br>
                    <form action="/upload" method="post" enctype="multipart/form-data">
                    @csrf
                    
                    <input type="file" class="form-control" name="thing" id="title">
                    <p id="s"></p>
                    <br>
                    <input type="submit" class="btn btn-sm btn-block btn-danger" value="Upload">
                    </form>
                </div>
            </div>
        </div>
    </body>
</html>

我想从 web.php 文件中获取 $name 并在我的 HTML 代码 div 中显示该值。 我怎么可能做到这一点?

【问题讨论】:

  • 你想在哪里展示你的价值?

标签: php laravel


【解决方案1】:

在我看来,您似乎想使用一个尚不存在的变量。 $name 变量是在表单提交后定义的。 如果可以在提交表单之前定义变量,则适用以下内容

您不能从发布路线传递变量。 您需要创建另一个路由来显示您的表单并使用 post 路由来处理数据。 例如

web.php

<!-- web.php -->
<?php
use Illuminate\Support\Facades\Route;
use Illuminate\Http\Request;
Route::get('/', function () {
    return view('welcome');
});

//Route to show the form

Route::get('/upload',function (){
    $value = "ValueThatShouldBeDisplayed";
    return view('showForm', ['value'=>$value]);
})->name('upload.show');//route name

//Route to process the data

Route::post('/upload', function (Request $request) {
    $name=$request->file("thing")->getClientOriginalName();
    Storage::disk("google")->putFileAs("",$request->file("thing"),$name);

    //redirecting to home or something
    return redirect('/');

})->name("upload.store");//route name

您的 Html 必须存储在 \ressources\views\showForm.blade.php

showForm.blade.php

<!-- showForm.blade.php -->

<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">

        <title>Google drive integration in laravel</title>
    <!-- CSS only -->
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-+0n0xVW2eSR5OomGNYDnhzAbDsOXxcvSN1TPprVMTNDbiYZCxYbOOl7+AMvyTG2x" crossorigin="anonymous">
    </head>
    <body>
        <div class="container">
            <div class="row">
                <div class="col-12">
    
                <br><br><br>
                    <!-- store route as action -->
                    <form action="{{ route('upload.store') }}" method="post" enctype="multipart/form-data">
                    @csrf
                    
                    <!-- value Part -->
                    {{ $value }}

                    <input type="file" class="form-control" name="thing" id="title">
                    <p id="s"></p>
                    <br>
                    <input type="submit" class="btn btn-sm btn-block btn-danger" value="Upload">
                    </form>
                </div>
            </div>
        </div>
    </body>
</html>

如果您想在选择文件后立即更改内容 你应该看看 Vue 组件。

【讨论】:

  • 它仍然在说 $value 是未定义的。
  • 有一个错字是Route::get 而不是Rout::get 也许这就是原因
  • 我在 get route 中写了$name=$request-&gt;file("thing")-&gt;getClientOriginalName(); 并发送 $name 但同样的错误是未定义,如果发送像 $value="hello" 这样的字符串仍然说未定义
  • 很抱歉 view() 方法需要视图名称和数组。所以是return view('showForm', ['value'=&gt;$value])
  • 它不会改变任何东西
猜你喜欢
  • 1970-01-01
  • 2023-01-24
  • 2021-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-25
  • 1970-01-01
相关资源
最近更新 更多