【问题标题】:undefined variable reimage laravel未定义的变量重新映像 laravel
【发布时间】:2021-06-22 11:28:47
【问题描述】:

我正在尝试删除图像,但它说未定义的变量 reimage 代码: 类别控制器

/**
 * Show the form for creating a new resource.
 *
 * @return \Illuminate\Http\Response
 */
public function create()
{
    return view('admin.category.add');
}

/**
 * Store a newly created resource in storage.
 *
 * @param  \Illuminate\Http\Request  $request
 * @return \Illuminate\Http\Response
 */
public function store(Request $request)
{
    $request->validate([
        'title' => 'required|min:5|max:20',
        'detail' => 'required',
        'cat_image' => 'required',
    ]);

    if($request->hasFile('cat_image')){
        $image = $request->file('cat_image');
        $reimage = time().'.'.$image->getClientOriginalExtension();
        $dest = public_path('/imgs');
        $image->move($dest,$reimage);
    }

    $category = new Category;
    $category->title= $request->title;
    $category->title= $request->title;
    $category->image= $reimage;
    $category->save();

return redirect('admin/category/create')->with('Data has been added succesfully');

}

web.php

  <?php
    
   

     use Illuminate\Support\Facades\Route;
        use App\Http\Controllers\HomeController;
        use App\Http\Controllers\AdminController;
        use App\Http\Controllers\CategoryController;
        
        /*
        |--------------------------------------------------------------------------
        | 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('/',[HomeController::class,'home']);
        
        Route::get('/login',[AdminController::class,'login']);
        Route::post('/login',[AdminController::class,'submit_login'])->name('submit_login');
        Route::get('/admin',[AdminController::class,'dashboard']);
        Route::resource('/admin/category',CategoryController::class)

add.blade.php **

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <meta http-equiv="X-UA-Compatible" content="IE=edge" />
        <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
        <meta name="description" content="" />
        <meta name="author" content="" />
        <title>Static Navigation - SB Admin</title>
        <link href="{{ URL::to('/css/styles.css') }}" rel="stylesheet" />
        <script src="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/js/all.min.js" crossorigin="anonymous"></script>
    </head>
    <body>
        <nav class="sb-topnav navbar navbar-expand navbar-dark bg-dark">
            <!-- Navbar Brand-->
            <a class="navbar-brand ps-3" href="index.html">Start Bootstrap</a>
            <!-- Sidebar Toggle-->
            <button class="btn btn-link btn-sm order-1 order-lg-0 me-4 me-lg-0" id="sidebarToggle" href="#!"><i class="fas fa-bars"></i></button>
            <!-- Navbar Search-->
            <form class="d-none d-md-inline-block form-inline ms-auto me-0 me-md-3 my-2 my-md-0">
                <div class="input-group">
                    <input class="form-control" type="text" placeholder="Search for..." aria-label="Search for..." aria-describedby="btnNavbarSearch" />
                    <button class="btn btn-primary" id="btnNavbarSearch" type="button"><i class="fas fa-search"></i></button>
                </div>
            </form>
            <!-- Navbar-->
            <ul class="navbar-nav ms-auto ms-md-0 me-3 me-lg-4">
                <li class="nav-item dropdown">
                    <a class="nav-link dropdown-toggle" id="navbarDropdown" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false"><i class="fas fa-user fa-fw"></i></a>
                    <ul class="dropdown-menu dropdown-menu-end" aria-labelledby="navbarDropdown">
                        <li><a class="dropdown-item" href="#!">Settings</a></li>
                        <li><a class="dropdown-item" href="#!">Activity Log</a></li>
                        <li><hr class="dropdown-divider" /></li>
                        <li><a class="dropdown-item" href="#!">Logout</a></li>
                    </ul>
                </li>
            </ul>
        </nav>
        <div id="layoutSidenav">
            <div id="layoutSidenav_nav">
                <nav class="sb-sidenav accordion sb-sidenav-dark" id="sidenavAccordion">
                    <div class="sb-sidenav-menu">
                        <div class="nav">
                            <div class="sb-sidenav-menu-heading">Core</div>
                            <a class="nav-link" href="index.html">
                                <div class="sb-nav-link-icon"><i class="fas fa-tachometer-alt"></i></div>
                                Dashboard
                            </a>
                            <div class="sb-sidenav-menu-heading">Interface</div>
                            <a class="nav-link collapsed" href="#" data-bs-toggle="collapse" data-bs-target="#collapseLayouts" aria-expanded="false" aria-controls="collapseLayouts">
                                <div class="sb-nav-link-icon"><i class="fas fa-columns"></i></div>
                                Layouts
                                <div class="sb-sidenav-collapse-arrow"><i class="fas fa-angle-down"></i></div>
                            </a>
                            <div class="collapse" id="collapseLayouts" aria-labelledby="headingOne" data-bs-parent="#sidenavAccordion">
                                <nav class="sb-sidenav-menu-nested nav">
                                    <a class="nav-link" href="layout-static.html">Static Navigation</a>
                                    <a class="nav-link" href="layout-sidenav-light.html">Light Sidenav</a>
                                </nav>
                            </div>
                            <a class="nav-link collapsed" href="#" data-bs-toggle="collapse" data-bs-target="#collapsePages" aria-expanded="false" aria-controls="collapsePages">
                                <div class="sb-nav-link-icon"><i class="fas fa-book-open"></i></div>
                                Pages
                                <div class="sb-sidenav-collapse-arrow"><i class="fas fa-angle-down"></i></div>
                            </a>
                            <div class="collapse" id="collapsePages" aria-labelledby="headingTwo" data-bs-parent="#sidenavAccordion">
                                <nav class="sb-sidenav-menu-nested nav accordion" id="sidenavAccordionPages">
                                    <a class="nav-link collapsed" href="#" data-bs-toggle="collapse" data-bs-target="#pagesCollapseAuth" aria-expanded="false" aria-controls="pagesCollapseAuth">
                                        Authentication
                                        <div class="sb-sidenav-collapse-arrow"><i class="fas fa-angle-down"></i></div>
                                    </a>
                                    <div class="collapse" id="pagesCollapseAuth" aria-labelledby="headingOne" data-bs-parent="#sidenavAccordionPages">
                                        <nav class="sb-sidenav-menu-nested nav">
                                            <a class="nav-link" href="login.html">Login</a>
                                            <a class="nav-link" href="register.html">Register</a>
                                            <a class="nav-link" href="password.html">Forgot Password</a>
                                        </nav>
                                    </div>
                                    <a class="nav-link collapsed" href="#" data-bs-toggle="collapse" data-bs-target="#pagesCollapseError" aria-expanded="false" aria-controls="pagesCollapseError">
                                        Error
                                        <div class="sb-sidenav-collapse-arrow"><i class="fas fa-angle-down"></i></div>
                                    </a>
                                    <div class="collapse" id="pagesCollapseError" aria-labelledby="headingOne" data-bs-parent="#sidenavAccordionPages">
                                        <nav class="sb-sidenav-menu-nested nav">
                                            <a class="nav-link" href="401.html">401 Page</a>
                                            <a class="nav-link" href="404.html">404 Page</a>
                                            <a class="nav-link" href="500.html">500 Page</a>
                                        </nav>
                                    </div>
                                </nav>
                            </div>
                            <div class="sb-sidenav-menu-heading">Addons</div>
                            <a class="nav-link" href="charts.html">
                                <div class="sb-nav-link-icon"><i class="fas fa-chart-area"></i></div>
                                Charts
                            </a>
                            <a class="nav-link" href="tables.html">
                                <div class="sb-nav-link-icon"><i class="fas fa-table"></i></div>
                                Tables
                            </a>
                        </div>
                    </div>
                    <div class="sb-sidenav-footer">
                        <div class="small">Logged in as:</div>
                        Start Bootstrap
                    </div>
                </nav>
            </div>
            <div id="layoutSidenav_content">
                <main>
                    <div class="container-fluid px-4">
                        <h1 class="mt-4">Create Category</h1>
                        <ol class="breadcrumb mb-4">
                            <li class="breadcrumb-item"><a href="index.html">Dashboard</a></li>
                            <li class="breadcrumb-item active">Create Category</li>
                        </ol>
                        <div class="card mb-4">
                            <div class="card-header">
                            <h1>Create</h1>
                            </div>
                            <div class="card-body">
                            @if($errors)
                                @foreach($errors->all() as $error)
                                    <p class="text-danger">{{ $error }}</p>
                                @endforeach
                            @endif
                            @if(Session::has('success'))
                                <p class="text-danger">{{ session('success') }}</p>
                            @endif
                            <form method="POST" action="{{ url('admin/category') }}" encrypt="multipart/form-data">
                            @csrf
                                <div class="form-group">
                                    <label for="exampleInputEmail1">Title</label>
                                    <input type="text" class="form-control" name="title" placeholder="Enter Title">
                                </div>
                                <div class="form-group">
                                    <label for="exampleInputPassword1">Detail</label>
                                    <input type="text" class="form-control" name="detail"  placeholder="Enter details about the category">
                                </div>
                                <div class="form-group">
                                    <label for="exampleInputPassword1">Image</label>
                                    <input type="file" class="form-control" name="cat_image" placeholder="Image">
                                    <small id="emailHelp" class="form-text text-muted">a jpg or png</small>
                                </div>
                                <button type="submit" class="btn btn-primary">Submit</button>
                                </form>
                            </div>
                        </div>
                        <div style="height: 100vh"></div>
                        <div class="card mb-4"><div class="card-body">When scrolling, the navigation stays at the top of the page. This is the end of the static navigation demo.</div></div>
                    </div>
                </main>
                <footer class="py-4 bg-light mt-auto">
                    <div class="container-fluid px-4">
                        <div class="d-flex align-items-center justify-content-between small">
                            <div class="text-muted">Copyright &copy; Your Website 2021</div>
                            <div>
                                <a href="#">Privacy Policy</a>
                                &middot;
                                <a href="#">Terms &amp; Conditions</a>
                            </div>
                        </div>
                    </div>
                </footer>
            </div>
        </div>
        <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.1/dist/js/bootstrap.bundle.min.js" crossorigin="anonymous"></script>
        <script src="{{ URL::to('/js/scripts.js') }}"></script>
    </body>
</html>

我正在尝试为照片命名,因为名称是时间+原始名称 毫升> 我正在尝试为照片命名,因为名称是时间+原始名称 毫升> 我正在尝试为照片命名,因为名称是时间+原始名称 毫升> 我正在尝试为照片命名,因为名称是时间+原始名称 毫升> 我正在尝试为照片命名,因为名称是时间+原名

**

【问题讨论】:

  • 如果这没有帮助,请通过编辑将您解决问题的尝试添加到问题中
  • 问题是它没有在 CategoryController 中定义变量 reimage 也没有在 ** $category->image= $reimage;** 我觉得这是因为$reimage 处于 if 条件 @NicoHaase
  • 是的,既然你已经知道它没有被初始化,为什么还要使用那个变量呢?
  • if 语句之上,您可以编写$reimage = '';$reimage = null; 来初始化变量。为什么不从基础开始? php.net/docs.php

标签: php laravel


【解决方案1】:

您得到的变量未定义,因为它仅在 IF 条件内初始化并在该代码下方使用。如果 IF 条件不成立,则永远不会创建变量并给出错误。

使用空字符串(或其他需要的 DB 字段)简单地初始化变量。

这是你的更新功能

public function store(Request $request)
{
    $request->validate([
        'title' => 'required|min:5|max:20',
        'detail' => 'required',
        'cat_image' => 'required',
    ]);

    $reimage = '';
    if($request->hasFile('cat_image')){
        $image = $request->file('cat_image');
        $reimage = time().'.'.$image->getClientOriginalExtension();
        $dest = public_path('/imgs');
        $image->move($dest,$reimage);
    }

    $category = new Category;
    $category->title= $request->title;
    $category->title= $request->title;
    $category->image= $reimage;
    $category->save();

return redirect('admin/category/create')->with('Data has been added succesfully');
}

还有html有错误,form enctype是拼写错误,修复它,你将在后端接收文件:

你的

<form method="POST" action="{{ url('admin/category') }}" encrypt="multipart/form-data">

正确的一项:

<form method="POST" action="{{ url('admin/category') }}" enctype="multipart/form-data">

【讨论】:

  • 那么我怎样才能使它成为现实呢?
  • 我知道为什么它不发送它我删除了 if 条件,它说 Call to a member function getClientOriginalExtension() on null 你能帮助@Muneeb A.
  • @CoderMoataz enctype 在您的表单中出现拼写错误。修复此问题,它将正常工作: enctype="multipart/form-data"
  • @CoderMoataz,我已经更新了上面的答案,现在应该可以解决您的问题了
  • 现在说猫图片上传失败。
猜你喜欢
  • 1970-01-01
  • 2019-04-29
  • 1970-01-01
  • 2015-05-15
  • 1970-01-01
  • 2019-03-01
  • 2023-03-05
  • 2018-01-26
  • 2020-09-24
相关资源
最近更新 更多