codeigniter 代码点火器4 PHP表单插入的数据库

oug3syen  于 2023-03-10  发布在  PHP
关注(0)|答案(1)|浏览(134)

我有麻烦如何推动或保存数据的形式,供用户把。我有点新的框架和教程或文档从框架本身是不是有用的。有人能找到一个解决方案吗?这里是它的路线。

<?php

namespace Config;

// Create a new instance of our RouteCollection class.
$routes = Services::routes();

/*
 * --------------------------------------------------------------------
 * Router Setup
 * --------------------------------------------------------------------
 */
$routes->setDefaultNamespace('App\Controllers');
$routes->setDefaultController('Pages');
$routes->setDefaultMethod('view');
$routes->setTranslateURIDashes(false);
$routes->set404Override();
// The Auto Routing (Legacy) is very dangerous. It is easy to create vulnerable apps
// where controller filters or CSRF protection are bypassed.
// If you don't want to define all routes, please use the Auto Routing (Improved).
// Set `$autoRoutesImproved` to true in `app/Config/Feature.php` and set the following to true.
// $routes->setAutoRoute(false);

/*
 * --------------------------------------------------------------------
 * Route Definitions
 * --------------------------------------------------------------------
 */

// We get a performance increase by specifying the default
// route since we don't have to scan directories.
use App\Controllers\News;
use App\Controllers\Pages;
use App\Controllers\Form;
$routes->get('/', [Pages::class, 'view'], ['as' => 'pages.view']);
// $routes->match(['get', 'post'], 'create', [News::class, 'create']);
// $routes->get('news/(:segment)', [News::class, 'view']);
// $routes->get('news', [News::class, 'index']);
// $routes->get('pages', [Pages::class, 'index']);
// $routes->get('(:segment)', [Pages::class, 'view']);
$routes->get('form', [Form::class, 'index'], ['as' => 'form.index']);
$routes->post('form-add', [Form::class, 'add'], ['as' => 'form.add']);

/*
 * --------------------------------------------------------------------
 * Additional Routing
 * --------------------------------------------------------------------
 *
 * There will often be times that you need additional routing and you
 * need it to be able to override any defaults in this file. Environment
 * based routes is one such time. require() additional route files here
 * to make that happen.
 *
 * You will have access to the $routes object within that file without
 * needing to reload it.
 */
if (is_file(APPPATH . 'Config/' . ENVIRONMENT . '/Routes.php')) {
    require APPPATH . 'Config/' . ENVIRONMENT . '/Routes.php';
}

这是控制器

<?php

namespace App\Controllers;

use CodeIgniter\HTTP\IncomingRequest;
use CodeIgniter\Files\File;
use App\Controllers\BaseController;
use App\Models\News as News;

class Form extends BaseController
{
    public function index()
    {
        helper(['form', 'url']);

        return view('templates/header', [
                'title' => ucfirst("Upload")
            ])
            . view('pages/form')
            . view('templates/footer');
    }

    public function add()
    {
        helper(['form', 'url']);

        $request = service('request');
        $title = $request->getPost('title');
        $name = $request->getPost('name');
        $img = $request->getPost('image');

        $response = [
            'title' => $title,
            'name' => $name,
            'image' => $img
        ];
        return view('templates/header')
            . view('pages/load')
            . view('templates/footer');
    }
}

这是表格本身

<div class="container">
  <div class="row">
    <div class="col-md-6 offset-md-3">
      <form action="<?= route_to('form.add') ?>" method="post" enctype="multipart/form-data"> 
       
      <?= csrf_field() ?>
      <div class="form-group">
          <label for="name">Name:</label>
          <input type="text" class="form-control" required id="name" name="name">
        </div>
        <div class="form-group">
          <label for="title">Title:</label>
          <input type="text" class="form-control" required id="title" name="title">
        </div>
        <div class="form-group">
          <label for="image-link">Image Link:</label>
          <input type="text" class="form-control" required id="image" name="image">
        </div>
        <button type="submit" class="mt-25 btn action-1 w-full" value ="Submit">Submit</button>
      </form>
    </div>
  </div>
</div>

我试着按照文档上的创建新闻的东西,它不工作,它不保存到数据库本身,当我看服务器端,它返回的页面,我试图重定向后,提交的形式

hrirmatl

hrirmatl1#

首先:带有点的命名路由不是一个好主意。请使用连字符或其他名称。
在控制器方法中,不向数据库写入任何内容,只向数组赋值,但从不对数组执行任何操作。
正在保存到数据库:

$model = new NewsModel();
$news = [
            'title' => $title,
            'name' => $name,
            'image' => $img
        ];    
$result = $model->save($news);

将数据返回到视图:

return view('templates/header')
    . view('pages/load', ['news' => $news, 'result' => $result]) // or pass an array
    . view('templates/footer');

如果你完全按照文档中的“构建你的第一个应用程序”一节来做,它肯定会工作(我个人成功地做了几次)。

相关问题