質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.01%

CodeigniterというPHPのフレームワークについて教えてください。

解決済

回答 1

投稿

  • 評価
  • クリップ 1
  • VIEW 1,439

UekiKouji

score 115

いつもお世話になります。本日は、PHPについてご教授お願いします。

開発環境
PHP7
mysql
Apache2.4

Codeignitreのチュートリアルを勉強しています。

http://codeigniter.jp/user_guide/3/tutorial/create_news_items.html

のニュース記事を作成のところを行なっています。
create.phpからフォームにデータを入力後、submitボタンを押すと
http://[::1]/codeIgniter/index.php/news/createへURLへ移動し、

このサイトにアクセスできません

[::1] で接続が拒否されました。

と表示されます。

controllerがないと言っているようです。
チュートリアルを行なっているので、どのような設定等が不足しているのかよくわかりません。
調査しようにもどのようにしたらわかりません。
丸投げのようで、大変申し訳ないと思いますが教えていただけないでしょうか。
よろしくお願いします。
以下がソースです。

// views/news/create.php

<h2><?php echo $title; ?></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>

// controllers/News.php

<?php
class News extends CI_Controller {

        public function __construct()
        {
                parent::__construct();
                $this->load->model('news_model');
                $this->load->helper('url_helper');
        }

        public function index()
        {
                $data['news'] = $this->news_model->get_news();
                $data['title'] = 'News archive';

                $this->load->view('templates/header', $data);
                $this->load->view('news/index', $data);
                $this->load->view('templates/footer');
        }

        public function view($slug = NULL)
        {
                $data['news_item'] = $this->news_model->get_news($slug);

                if (empty($data['news_item']))
                {
                  show_404();
                }

                $data['title'] = $data['news_item']['title'];

                $this->load->view('templates/header', $data);
                $this->load->view('news/view', $data);
                $this->load->view('templates/footer');
        }


        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');
          }
        }
}
?>

config/routes.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';
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

0

おそらくは、base_urlの設定の問題かと思われます。基本的にCodeigniterでは、リンクは全て

$config['base_url'].'news/create';

のように扱われます。

application/configにconfig.phpというファイルがあるはずなのですが、そのファイルの26行付近にあります

$config['base_url'] =

には何が代入されていますか?

base_urlの設定を書き換えれば、動作すると思われます。
例:

$config['base_url'] = 'localhost';

localhostの部分は、適切に書き換えてください。例えば質問主さんが、レンタルサーバーなどで動かしているならば、そのドメインあるいはホスト名を指定する必要があるということです。(例: http://example.com/で動かしているなら、base_urlを

$config['base_url'] = 'http://example.com';


というように書き換える必要がある)

また、apacheにはバーチャルホスト、vhostと言われる機能の設定がありますが、使用しているならばそのbase_urlはそのホスト名に書き換える必要がありますね。

apacheはデフォルトではlocalhostで動くので、特に設定を変更していない場合は

$config['base_url'] = 'localhost';


で大丈夫なはずです。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/11/16 00:38

    ご回答ありがとうございます。お礼を言うのが大変遅くなりすいません。今後ともよろしくお願いします。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.01%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る