1

Я создал сайт в CodeIgniter2, но я не могу заставить формы работать, так как я не могу даже разобраться, как заставить его публиковать сообщения! Любая помощь? Вот мой код и формы только на Порекомендуйте, контактно-нами и поддержка страниц:Код Форма воспламенителя не размещена

Форма:

<div id="mainWhiteBox"> 
     <h3>Tell people about us...</h3> 
     <p>If you know of a company or individual who need a really great design agency to help them with a project, let them know about us and benefit too. <br /><br /> 
     <span class="customColour">We will give you &pound;50 of Marks &amp; Spencer vouchers for every client you recommend to us who goes on to become a client of xxxxx, it's that simple &amp; there is no limit to the amount of vouchers you can earn!</span></p> 
     <div id="recommendSomeone"> 
      <?php echo validation_errors(); print_r($_POST);?> 
      <?php echo form_open('recommend', array('id' => 'recommendForm')); ?> 
       <label for="friendName">Your Friend's Name</label> 
       <input type="text" id="friendName" value="<?php echo set_value('friendName'); ?>" /> 
       <label for="friendEmail">Your Friend's Email Address</label> 
       <input type="email" id="friendEmail" value="<?php echo set_value('friendEmail'); ?>" placeholder="[email protected]" /> 
       <label for="customerName">Your Name</label> 
       <input type="text" id="customerName" value="<?php echo set_value('customerName'); ?>" /> 
       <label for="customerEmail">Your Email Address</label> 
       <input type="email" id="customerEmail" value="<?php echo set_value('customerEmail'); ?>" placeholder="[email protected]" /> 
       <label for="friendConfirm"><input type="checkbox" id="friendConfirm" value="1" <?php echo set_checkbox('friendConfirm', '1'); ?> />I confirm that I know the person I am recommending above.</label> 
       <input type="submit" value="Submit Recommendation" /> 
      </form> 
      <img src="<?=base_url(); ?>images/uploads/<?php echo $images[0]["image_filename"]; ?>" alt="<?php echo $images[0]["image_alt"]; ?>" width="180px" height="300px" class="floatRight" /> 
     </div> 
     <p class="elevenFont">* Get &pound;50 of Marks &amp; Spencer vouchers per company or person recommended who goes on to open an account with xxxxx.</p> 
    </div> 
    <?php include("/home/xxxxx/libraries/application/views/widgets/newsWidget.php"); ?> 
    <?php include("/home/xxxxx/libraries/application/views/widgets/twitterWidget.php"); ?> 
    <?php include("/home/xxxxx/libraries/application/views/widgets/quickViewWidget.php"); ?> 
    <?php include("/home/xxxxx/libraries/application/views/widgets/fbLikePageWidget.php"); ?> 
    <?php include("/home/xxxxx/libraries/application/views/widgets/getQuoteBarWidget.php"); ?> 
    <?php include("/home/xxxxx/libraries/application/views/widgets/newsletterSubscribeWidget.php"); ?> 

Контроллер:

<?php 

class Pages extends CI_Controller { 

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


public function view($page = 'home') 
{ 

    if (! file_exists('/home/urbanfea/libraries/application/views/pages/'.$page.'.php')) 
    { 
     // Whoops, we don't have a page for that! 
     show_404(); 
    }  

    $data['title'] = $this->pages_model->getTitle($page); 
    $data['showcase'] = $this->pages_model->getShowcase(); 
    $data['news'] = $this->pages_model->getNewsWidgetContent(); 
    $data['quote'] = $this->pages_model->getQuoteFromBank(); 
    $data['images'] = $this->pages_model->getPageImageArray($page); 
    $data['PageStraplines'] = $this->pages_model->getStraplines($page); 
    $data['serverStatus'] = $this->pages_model->getIssue("1"); 

    if($page == "support") 
    { 
     $this->load->view('templates/supportHead', $data); 
    } 
    else 
    { 
     $this->load->view('templates/head', $data); 
    } 

    if($page == "recommend" || $page == "contact-us" || $page == "support") 
    { 
     $this->load->helper(array('form', 'url')); 
     $this->load->library('form_validation'); 

     $this->form_validation->set_rules('friendName', 'Friend\'s Name', 'required'); 
     $this->form_validation->set_rules('friendEmail', 'Friend\'s Email Address', 'required'); 
     $this->form_validation->set_rules('customerName', 'Customer\'s Name', 'required'); 
     $this->form_validation->set_rules('customerEmail', 'Customer\'s Email Address', 'required'); 
     //$this->form_validation->set_rules(FriendConfirm', 'Confirm you know the person', 'required'); 

     if ($this->form_validation->run() === true) 
     { 
      $this->load->view('templates/formSuccess', $data); echo "a"; 
     } 
     elseif($this->form_validation->run() === false && validation_errors() != "") 
     { 
      $this->load->view('templates/formError', $data); echo "b"; 
     } 
     elseif($this->form_validation->run() === false) 
     { 
      echo "c"; 
     } 

    } 

    $this->load->view('templates/header', $data); 
    $this->load->view('pages/'.$page, $data); 
    $this->load->view('templates/footer', $data); 

} 

}

>

Редактировать

Вот маршруты в маршрутизаторе:

$route['404_override'] = ''; 

$route['user/(:any)'] = 'user/view/$1'; 
$route['user'] = 'user/login'; 
$route['our-work/(:any)'] = 'our_work/view/$1'; 
$route['our-work'] = 'our_work'; 
$route['what-we-do/(:any)'] = 'what_we_do/view/$1'; 
$route['what-we-do'] = 'what_we_do'; 
$route['(:any)'] = 'pages/view/$1'; 
$route['default_controller'] = 'pages/view'; 

ответ

4

Ваша Form_Open функция echo form_open('recommend', array('id' => 'recommendForm')); создаст следующий вывод: <form method="post" accept-charset="utf-8" action="http:/example.com/index.php/recommend" />

Это ищет контроллер называется рекомендовать, что я не думаю, что ты хочешь. Измените функцию form_open, чтобы она направила вашу форму правильному контроллеру/действию.

Кроме того, это не похоже на то, что ваш код полностью использует инфраструктуру MVC. Вместо того, чтобы обрабатывать все через один и тот же контроллер/функцию и иметь все эти операторы if для загрузки разных представлений на основе того, что такое $ page, у вас должны быть отдельные функции для каждого из этих представлений.

EDIT: Элементы ввода формы не имеют атрибута name. Они должны иметь атрибут name для доступа через $ _POST. Взгляните на this page in the Codeigniter help. Может быть, использовать функцию form_input для генерации полей ввода?

+0

Hi AndrewR, Это мой первый сайт MVC, я до сих пор программировал кодировку, поэтому код MVC для меня не знаком, поэтому я не сделал другого представления. Нет, я не хочу, чтобы он пошел на рекомендуемый контроллер, он отправляется на контроллер страниц. Я запутался, потому что он «обновит» страницу и повторит c, чтобы показать, что форма не была отправлена ​​(в том случае, когда я установил правила), но 'print_r ($ _ POST);' просто показывает пустой массив : S –

+0

Вы не делаете какую-либо переадресацию в файле routes.php, чтобы получить все на тот же сервер Pages/View, что вы? – AndrewR

+0

Вам не хватает атрибута 'name' на входах формы. См. Обновленный ответ. – AndrewR