it's running fine when i tested in local server, but when i uploaded 000webhost server to it's showing an error.
an error My Routes:
my routes :
$routes->get('/komik/create', 'komik::create');
$routes->get('/komik/edit/(:segment)', 'komik::edit/$1');
$routes->delete('/komik/(:num)', 'komik::delete/$1');
$routes->get('/komik/(:any)', 'Komik::detail/$1');
can anyone helping me?
my controller
<?php
namespace App\Controllers;
use App\Models\Data_KomikModel;
use App\Models\GambarModel;
use App\Models\SoalModel;
class Komik extends BaseController
{
protected $komikModel;
public function __construct()
{
$this->komikModel = new Data_KomikModel();
$this->gambarModel = new GambarModel();
$this->soalModel = new SoalModel();
// dd(session()->get('email'));
}
public function index()
{
if (!session()->has('username')) {
return redirect()->to('/auth/login');
}
// $komik = $this->komikModel->findAll();
$data = [
'title' => 'Data Komik',
'komik' => $this->komikModel->getKomik()
];
// $komikModel = new \App\Models\Data_KomikModel();
// $komikModel = new Data_KomikModel();
return view('dataKomik/komik', $data);
}
public function detail($slug)
{
$komik = $this->komikModel->getKomik($slug);
$gambar = $this->gambarModel->getGambar($slug);
$soal = $this->soalModel->getDataSoal($slug);
// dd($soal);
$data = [
'title' => 'Info Komik',
'komik' => $komik,
'gambar' => $gambar,
'soal' => $soal,
'validation' => \Config\Services::validation()
];
if (empty($data['komik'])) {
throw new \CodeIgniter\Exceptions\PageNotFoundException('Judul Komik ' . $slug . 'Tidak Ditemukan');
}
return view('dataKomik/detail', $data);
}
public function create()
{
// session();
$data = [
'title' => 'Form Tambah Data Komik',
'validation' => \Config\Services::validation()
];
return view('dataKomik/create', $data);
}
public function save()
{
if (!$this->validate([
'judul' => [
'rules' => 'required|is_unique[data_komik.judul]',
'errors' => [
'required' => '{field} komik harus diisi.',
'is_unique' => '{field} komik sudah terdaftar'
]
],
'sampul' => [
'rules' => 'max_size[sampul,1024]|is_image[sampul]|mime_in[sampul,image/jpg,image/jpeg,image/png]',
'errors' => [
'max_size' => 'ukuran gambar terlalu besar',
'is_image' => 'yang anda pilih bukan gambar',
'mime_in' => 'yang anda pilih bukan gambar',
]
]
])) {
// $validation = \Config\Services::validation();
// return redirect()->to('/komik/create')->withInput()->with('validation', $validation);
return redirect()->to('/komik/create')->withInput();
}
$fileSampul = $this->request->getFile('sampul');
if ($fileSampul->getError() == 4) {
$namaSampul = 'default.jpg';
} else {
// $namaSampul = $fileSampul->getName();
$namaSampul = $fileSampul->getRandomName();
$fileSampul->move('img', $namaSampul);
}
$slug = url_title($this->request->getVar('judul'), '-', true);
$this->komikModel->save([
'judul' => $this->request->getVar('judul'),
'slug' => $slug,
'sampul' => $namaSampul,
]);
session()->setFlashdata('pesan', '<div class="alert alert-success alert-dismissible fade show" role="alert">
Data Berhasil Ditambahkan.
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>');
return redirect()->to('/komik');
}
public function delete($id)
{
$komik = $this->komikModel->find($id);
if ($komik['sampul'] != 'default.jpg') {
unlink('img/' . $komik['sampul']);
}
$this->komikModel->delete($id);
session()->setFlashdata('pesan', '<div class="alert alert-success alert-dismissible fade show" role="alert">
Data Berhasil Dihapus.
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>');
return redirect()->to('/komik');
}
public function edit($slug)
{
$data = [
'title' => 'Form Ubah Data Komik',
'validation' => \Config\Services::validation(),
'komik' => $this->komikModel->getKomik($slug)
];
return view('dataKomik/edit', $data);
}
public function update($id)
{
$komikLama = $this->komikModel->getKomik($this->request->getVar('slug'));
if ($komikLama['judul'] == $this->request->getVar('judul')) {
$rule_judul = 'required';
} else {
$rule_judul = 'required|is_unique[data_komik.judul]';
}
if (!$this->validate([
'judul' => [
'rules' => $rule_judul,
'errors' => [
'required' => '{field} komik harus diisi.',
'is_unique' => '{field} komik sudah terdaftar'
]
],
'sampul' => [
'rules' => 'max_size[sampul,1024]|is_image[sampul]|mime_in[sampul,image/jpg,image/jpeg,image/png]',
'errors' => [
'max_size' => 'ukuran gambar terlalu besar',
'is_image' => 'yang anda pilih bukan gambar',
'mime_in' => 'yang anda pilih bukan gambar',
]
]
])) {
return redirect()->to('/komik/edit/' . $this->request->getVar('slug'))->withInput();
}
$fileSampul = $this->request->getFile('sampul');
$komik = $this->komikModel->find($id);
if ($fileSampul->getError() == 4) {
$namaSampul = $this->request->getVar('sampulLama');
} else {
$namaSampul = $fileSampul->getRandomName();
$fileSampul->move('img', $namaSampul);
if ($komik['sampul'] != 'default.jpg') {
unlink('img/' . $this->request->getVar('sampulLama'));
}
}
$slug = url_title($this->request->getVar('judul'), '-', true);
$this->komikModel->save([
'id_komik' => $id,
'judul' => $this->request->getVar('judul'),
'slug' => $slug,
'sampul' => $namaSampul,
]);
session()->setFlashdata('pesan', '<div class="alert alert-success alert-dismissible fade show" role="alert">
Data Berhasil Diubah.
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>');
return redirect()->to('/komik');
}
//--------------------------------------------------------------------
}
an error
Controller or its method is not found: \App\Controllers\komik::create
i try to hide detail's method in url, it's running fine in local server but why it's showing an error when i uploaded to web hosting
Hello I just look at your code i think codeigniter 4 is more powerful of detecting routes. Base on your route you don't even need to create those routing. Call your controller and methods without creating routing.
Here is it
namespace App\Controllers;
use App\Models\Data_KomikModel;
use App\Models\GambarModel;
use App\Models\SoalModel;
class Komik extends BaseController
{
protected $komikModel;
public function __construct()
{
$this->komikModel = new Data_KomikModel();
$this->gambarModel = new GambarModel();
$this->soalModel = new SoalModel();
// dd(session()->get('email'));
}
public function index()
{
if (!session()->has('username')) {
return redirect()->to('/auth/login');
}
// $komik = $this->komikModel->findAll();
$data = [
'title' => 'Data Komik',
'komik' => $this->komikModel->getKomik()
];
// $komikModel = new \App\Models\Data_KomikModel();
// $komikModel = new Data_KomikModel();
return view('dataKomik/komik', $data);
}
public function detail($slug)
{
$komik = $this->komikModel->getKomik($slug);
$gambar = $this->gambarModel->getGambar($slug);
$soal = $this->soalModel->getDataSoal($slug);
// dd($soal);
$data = [
'title' => 'Info Komik',
'komik' => $komik,
'gambar' => $gambar,
'soal' => $soal,
'validation' => \Config\Services::validation()
];
if (empty($data['komik'])) {
throw new \CodeIgniter\Exceptions\PageNotFoundException('Judul Komik ' . $slug . 'Tidak Ditemukan');
}
return view('dataKomik/detail', $data);
}
public function create()
{
// session();
$data = [
'title' => 'Form Tambah Data Komik',
'validation' => \Config\Services::validation()
];
return view('dataKomik/create', $data);
}
public function save()
{
if (!$this->validate([
'judul' => [
'rules' => 'required|is_unique[data_komik.judul]',
'errors' => [
'required' => '{field} komik harus diisi.',
'is_unique' => '{field} komik sudah terdaftar'
]
],
'sampul' => [
'rules' => 'max_size[sampul,1024]|is_image[sampul]|mime_in[sampul,image/jpg,image/jpeg,image/png]',
'errors' => [
'max_size' => 'ukuran gambar terlalu besar',
'is_image' => 'yang anda pilih bukan gambar',
'mime_in' => 'yang anda pilih bukan gambar',
]
]
])) {
// $validation = \Config\Services::validation();
// return redirect()->to('/komik/create')->withInput()->with('validation', $validation);
return redirect()->to('/komik/create')->withInput();
}
$fileSampul = $this->request->getFile('sampul');
if ($fileSampul->getError() == 4) {
$namaSampul = 'default.jpg';
} else {
// $namaSampul = $fileSampul->getName();
$namaSampul = $fileSampul->getRandomName();
$fileSampul->move('img', $namaSampul);
}
$slug = url_title($this->request->getVar('judul'), '-', true);
$this->komikModel->save([
'judul' => $this->request->getVar('judul'),
'slug' => $slug,
'sampul' => $namaSampul,
]);
session()->setFlashdata('pesan', '<div class="alert alert-success alert-dismissible fade show" role="alert">
Data Berhasil Ditambahkan.
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>');
return redirect()->to('/komik');
}
public function delete($id)
{
$komik = $this->komikModel->find($id);
if ($komik['sampul'] != 'default.jpg') {
unlink('img/' . $komik['sampul']);
}
$this->komikModel->delete($id);
session()->setFlashdata('pesan', '<div class="alert alert-success alert-dismissible fade show" role="alert">
Data Berhasil Dihapus.
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>');
return redirect()->to('/komik');
}
public function edit($slug)
{
$data = [
'title' => 'Form Ubah Data Komik',
'validation' => \Config\Services::validation(),
'komik' => $this->komikModel->getKomik($slug)
];
return view('dataKomik/edit', $data);
}
public function update($id)
{
$komikLama = $this->komikModel->getKomik($this->request->getVar('slug'));
if ($komikLama['judul'] == $this->request->getVar('judul')) {
$rule_judul = 'required';
} else {
$rule_judul = 'required|is_unique[data_komik.judul]';
}
if (!$this->validate([
'judul' => [
'rules' => $rule_judul,
'errors' => [
'required' => '{field} komik harus diisi.',
'is_unique' => '{field} komik sudah terdaftar'
]
],
'sampul' => [
'rules' => 'max_size[sampul,1024]|is_image[sampul]|mime_in[sampul,image/jpg,image/jpeg,image/png]',
'errors' => [
'max_size' => 'ukuran gambar terlalu besar',
'is_image' => 'yang anda pilih bukan gambar',
'mime_in' => 'yang anda pilih bukan gambar',
]
]
])) {
return redirect()->to('/komik/edit/' . $this->request->getVar('slug'))->withInput();
}
$fileSampul = $this->request->getFile('sampul');
$komik = $this->komikModel->find($id);
if ($fileSampul->getError() == 4) {
$namaSampul = $this->request->getVar('sampulLama');
} else {
$namaSampul = $fileSampul->getRandomName();
$fileSampul->move('img', $namaSampul);
if ($komik['sampul'] != 'default.jpg') {
unlink('img/' . $this->request->getVar('sampulLama'));
}
}
$slug = url_title($this->request->getVar('judul'), '-', true);
$this->komikModel->save([
'id_komik' => $id,
'judul' => $this->request->getVar('judul'),
'slug' => $slug,
'sampul' => $namaSampul,
]);
session()->setFlashdata('pesan', '<div class="alert alert-success alert-dismissible fade show" role="alert">
Data Berhasil Diubah.
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>');
return redirect()->to('/komik');
}
//--------------------------------------------------------------------
}
Then in your links use this
<a href="<?= base_url('komik/create')?>"> Create</a>
OR
If you still need to use the routing, remove the forward slash in front of the route that is instead of
$routes->get('/komik/create', 'komik::create');
$routes->get('/komik/edit/(:segment)', 'komik::edit/$1');
$routes->delete('/komik/(:num)', 'komik::delete/$1');
$routes->get('/komik/(:any)', 'Komik::detail/$1');
Use this
$routes->get('komik/create', 'komik::create');
$routes->get('komik/edit/(:segment)', 'komik::edit/$1');
$routes->delete('komik/(:num)', 'komik::delete/$1');
$routes->get('komik/(:any)', 'Komik::detail/$1');
I think this helps! if not call my attention