ArgumentCountError函数App\Controllers\Blog::view()的参数太少



很抱歉我的英语不好,但当我尝试打开localhost:8080/blog时遇到了问题,此消息显示在上

函数App\Controllers\Blog::view((的参数太少,在C:\examplep\htdocs\baru\vendor\codeigniter4\framework\system\CodeIgniter.php第896行传递了0,而预期正好为1

所以这就是控制器:


use CodeIgniterController;
use AppModelsModelsBlog;

class Blog extends BaseController
{
public function index()
{$data = [
'title' => 'artikel'
];
$model = new ModelsBlog();
if (!$this->validate([]))
{
$data['validation'] = $this->validator;
$data['artikel'] = $model->getArtikel();
return view('view_list',$data);
}
}
public function form(){
$data = [
'title' => 'Edit Form'
];
helper('form');
return view('view_form', $data);
}
public function view($id){
$data = [
'title' => 'artikel'
];
$model = new ModelsBlog();
$data['artikel'] = $model->PilihBlog($id)->getRow();
return view('view',$data);
}
public function simpan(){
$model = new ModelsBlog();
if ($this->request->getMethod() !== 'post') {
return redirect()->to('blog');
}
$validation = $this->validate([
'file_upload' => 'uploaded[file_upload]|mime_in[file_upload,image/jpg,image/jpeg,image/gif,image/png]|max_size[file_upload,4096]'
]);

if ($validation == FALSE) {
$data = array(
'judul'  => $this->request->getPost('judul'),
'isi' => $this->request->getPost('isi')
);
} else {
$upload = $this->request->getFile('file_upload');
$upload->move(WRITEPATH . '../public/assets/blog/images/');
$data = array(
'judul'  => $this->request->getPost('judul'),
'isi' => $this->request->getPost('isi'),
'gambar' => $upload->getName()
);
}
$model->SimpanBlog($data);
return redirect()->to('./blog')->with('berhasil', 'Data Berhasil di Simpan');
}
public function form_edit($id){
$data = [
'title' => 'edit artikel'
];
$model = new ModelsBlog();
helper('form');
$data['artikel'] = $model->PilihBlog($id)->getRow();
return view('form_edit',$data);
}
public function edit(){
$model = new ModelsBlog();
if ($this->request->getMethod() !== 'post') {
return redirect()->to('blog');
}
$id = $this->request->getPost('id');
$validation = $this->validate([
'file_upload' => 'uploaded[file_upload]|mime_in[file_upload,image/jpg,image/jpeg,image/gif,image/png]|max_size[file_upload,4096]'
]);

if ($validation == FALSE) {
$data = array(
'judul'  => $this->request->getPost('judul'),
'isi' => $this->request->getPost('isi')
);
} else {
$dt = $model->PilihBlog($id)->getRow();
$gambar = $dt->gambar;
$path = '../public/assets/blog/images/';
@unlink($path.$gambar);
$upload = $this->request->getFile('file_upload');
$upload->move(WRITEPATH . '../public/assets/blog/images/');
$data = array(
'judul'  => $this->request->getPost('judul'),
'isi' => $this->request->getPost('isi'),
'gambar' => $upload->getName()
);
}
$model->edit_data($id,$data);
return redirect()->to('./blog')->with('berhasil', 'Data Berhasil di Ubah');

}
public function hapus($id){
$model = new ModelsBlog();
$dt = $model->PilihBlog($id)->getRow();
$model->HapusBlog($id);
$gambar = $dt->gambar;
$path = '../public/assets/blog/images/';
@unlink($path.$gambar);
return redirect()->to('./blog')->with('berhasil', 'Data Berhasil di Hapus');
}
}

ModelsBlog.hp:

use CodeIgniterModel;

class ModelsBlog extends Model
{
protected $table = 'artikel';

public function getArtikel()
{
return $this->findAll();  
}
public function SimpanBlog($data)
{
$query = $this->db->table($this->table)->insert($data);
return $query;
}
public function PilihBlog($id)
{
$query = $this->getWhere(['id' => $id]);
return $query;
}
public function edit_data($id,$data)
{
$query = $this->db->table($this->table)->update($data, array('id' => $id));
return $query;
}
public function HapusBlog($id)
{
$query = $this->db->table($this->table)->delete(array('id' => $id));
return $query;
}
}

这是视图。hp:

<body style="width: 70%; margin: 0 auto; padding-top: 30px;">
<div class="row">
<div class="col-lg-12 margin-tb">
<div class="pull-left">
<h2><?php echo $artikel->judul; ?></h2>
</div>
</div>
</div>
<hr>
<div class="row">
<div class="col-lg-12">
<div class="row">
<?php
if (!empty($artikel->gambar)) {
echo '<img src="'.base_url("assets/blog/images/$artikel->gambar").'" width="30%">';
}
?>
<?php echo $artikel->isi; ?>
</div>
</div>
</div>

</body>

我找不到这个错误的任何解决方案,请帮忙,非常感谢

让我们回顾一下您告诉代码要做什么。

首先,你打电话到/博客。如果你打开了自动路由,这将把你转发到名为"博客"的控制器。

class Blog extends BaseController

由于您不使用任何内容扩展URL,因此将调用"index"方法。

public function index()
{$data = [
'title' => 'artikel'
];
$model = new ModelsBlog();
if (!$this->validate([]))
{
$data['validation'] = $this->validator;
$data['artikel'] = $model->getArtikel();
return view('view_list',$data);
}
}

index方法将$data设置为填充有'title'=>'的数组artikel’。然后用新的ModelsBlog填充$model。

class ModelsBlog extends Model

ModelsBlog中没有定义__construct方法,因此只加载类,并且与$model相关的特定执行停止在那里,这很好。

然后,博客中的index((继续并检查$this->validate([](返回false。由于没有其他语句,如果$this->validate([](如果返回true,代码执行将停止。所以我们假设$this->validate([](返回false。到目前为止还不错,你的代码没有什么奇怪的地方。

然而,如果$this->validate([](返回false,则告诉index((返回名为view((的函数。通常,CodeIgniter会为您提供设置为第一个参数的视图。但由于您还有一个名为"view"的Blog方法,CodeIgniter将尝试将请求重新路由到该方法。换句话说,你试图提出的实际请求是:

博客::view((

由于您已经声明view((接收1个强制参数,因此请求会触发一个错误。您可以通过将Blog的view((方法重命名为类似"show(("或"read(("的方法来解决此问题。任何其他与本机CodeIgniter view((函数不冲突的东西都是好的。

不过,老实说,您在index((函数调用中发送了两个参数,所以我有点困惑为什么错误生成的状态是您提供的0,但我希望至少您能从我的回答中获得一些见解,并设法解决问题。

如果有人能提供更多关于这方面的信息,请随时在下面发表评论,我会将您的信息添加到答案中(如果被接受的话(。

最新更新