2012-01-15 24 views
2

CodeIgniter 2.1.0をダウンロードし、CodeIgniter 2.1.0でtutorialに従っています。私はこのURLにフォームを送信しようとすると、URLリダイレクトが機能しないのはなぜですか?

問題がある:

ページはこのURLにリダイレクトされ
http://localhost/CodeIgniter/index.php/news/create 

:私はroute.phpを変更する多くの方法が疲れ

http://localhost/CodeIgniter/index.php/news/localhost/CodeIgniter/index.php/news/create 

それは動作しません。どうすればこの問題を解決できますか?

route.php

$route['news/create'] = 'news/create'; 
$route['news/(:any)'] = 'news/view/$1'; 
$route['news'] = 'news'; 
$route['(:any)'] = 'pages/view/$1'; 
$route['default_controller'] = 'pages/view'; 

これは、フォームページのコードである:

public function create() 
{ 
    $this->load->helper('form'); 
    $this->load->library('form_validation'); 

    $data['title'] = 'Create a news item'; 

    $this->form_validation->set_rules('title', 'Title', 'required'); 
    $this->form_validation->set_rules('text', 'text', 'required'); 

    if ($this->form_validation->run() === FALSE) 
    { 
     $this->load->view('templates/header', $data); 
     $this->load->view('news/create'); 
     $this->load->view('templates/footer'); 

    } 
    else 
    { 
     $this->news_model->set_news(); 
     $this->load->view('news/success'); 
    } 
} 

Iは、ページがロードされたときときに、フォームページ、以下のコードセグメントが実行されることに気づきますしかし、elseセグメントは決して実行のために変更されませんでした。

if ($this->form_validation->run() === FALSE) 
    { 
     $this->load->view('templates/header', $data); 
     $this->load->view('news/create'); 
     $this->load->view('templates/footer'); 

    } 

これはフォームページです。特別なものではなく、上記の作成機能を呼び出してください。

<h2>Create a news item</h2> 

<?php echo validation_errors(); ?> 

<?php echo form_open('news/create') ?> 

<label for="title">Title</label> 
<input type="input" name="title" /><br /> 

<label for="text">Text</label> 
<textarea name="text"></textarea><br /> 

<input type="submit" name="submit" value="Create news item" /> 

</form> 

create.phpこれは、フォームページのHTMLです:

<html> 
<head> 
<title>Create a news item - CodeIgniter 2 Tutorial</title> 
</head> 
<body> 
<h1>CodeIgniter 2 tutorial</h1><h2>Create a news item</h2> 

<form action="localhost/CodeIgniter/index.php/news/create" method="post" accept-charset="utf-8"> 
<label for="title">Title</label> 
<input type="input" name="title" /><br /> 

<label for="text">Text</label> 
<textarea name="text"></textarea><br /> 

<input type="submit" name="submit" value="Create news item" /> 

</form><strong>&copy;2012</strong> 
</body> 
</html> 

そして、私はcreate new itemボタンを押すと、URLが

http://localhost/CodeIgniter/index.php/news/localhost/CodeIgniter/index.php/news/create 

とページに変更しました番組番号404 Pages Not Found

+0

を確認することができますか?私はあなたが 'form_open()'を使っていることを知っていますが、ただユーモアしてHTMLの出力を確認するだけです。 –

+0

は、ニュースのタイトルとニュースの本文を含む新しいニュースをデータベースに挿入することです。 – qkzhu

+0

すべてのフォームは 'action'属性を持っています。私はその値があなたのHTML出力にあるのかどうか尋ねています。 –

答えて

6

私は解決策を見つけました。これは不適切なベースURL設定によって引き起こされました。私のベースURLの前に

されました:

$config['base_url'] = 'localhost/CodeIgniter';は今、私は

$config['base_url'] = 'http://localhost/CodeIgniter/'; 

にそれを変更し、それが今で正常に動作します。

おかげで誰のため:)

0

だけの提案を助けようとした、それができるかもしれすることに役立ちます:

$config['base_url'] = ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == "on") ? "https" : "http"); 
$config['base_url'] .= "://".$_SERVER['HTTP_HOST']; 
$config['base_url'] .= str_replace(basename($_SERVER['SCRIPT_NAME']),"",$_SERVER['SCRIPT_NAME']); 

は、あなたのconfig.phpファイルでこれを設定して、あなたは$config['base_url']心配になることはありません。それはhttpまたはhttpsポート、domainport number(例:8080、8880など)およびcodeigniter root folderを設定するためです。また、将来あなたのcodeigniterプロジェクトで再利用することもできます。 :)

また、あなたのフォームの `action`は何this article

関連する問題