CodeIgniter добавляется в начало представления, когда оно не должно быть - PullRequest
1 голос
/ 15 февраля 2012

Когда я вызываю normalDashboard (), он добавляется в начало моего просмотра. На мой взгляд, я называю $ reg из отформатированного стиля. Так что это не должно отражаться в начале представления ... Есть идеи относительно того, почему это происходит?

public function dcr() {
        // pass all dashboard accesses through this function
        $username = $this->session->userdata("username");
        $query = $this->db->get_where('users', array('username' => $username));
        $userType = $this->session->userdata('userType');
        if ($userType == 'regular') {
                foreach ($query->result() as $row) {
                    $data = array('reg' => $this->regularDashboard(), 'firstname' => $row->firstname);
                    $this->load->view('dashboard', $data);
} public function regularDashboard () {
            $userid = $this->session->userdata('userid');
            $results = $this->db->query("SELECT * FROM users");
            foreach ($results->result() as $row) {
                if($userid != $row->userid) {
                    echo $row->firstname . " " . $row->lastname;
                    echo "<form method='GET' action='processing/lib/process-send-friend-request.php?'>";
                    echo '<input name="accepted" type="submit" value="Send User Request" /><br />';
                    echo '<input name="AddedMessage" placeholder="Add a message?" type="textbox" />';
                    echo '<br>Select Friend Type: ' . '<br />Full: ';
                    echo '<input name="full_friend" type="checkbox"';
                    echo '<input type="hidden" name="id" value="' . $row->idusers . '" />';
                    echo '</form>';
                    echo "<br /><hr />";
                } elseif ($userid == $row->userid) {
                    echo $row->firstname . " " . $row->lastname;
                    echo "<br />";
                    echo "You all are currently friends";
                }
       }
}

Ответы [ 2 ]

1 голос
/ 15 февраля 2012

Представления буферизируются.Когда вы выводите что-либо непосредственно в контроллер, оно отправляется до , когда буфер очищается (следовательно, до того, как вывод, содержащий представление, отправляется в браузер), поэтому он появляется перед чем-либо.

Вы не должны этого делать (отправляя прямой вывод / выводя что-то за пределами представлений), вы рискуете столкнуться с проблемами, как только вы используете что-либо, связанное с заголовками (перенаправление, файлы cookie, сеансы CI ...)

ОБНОВЛЕНИЕ:

Чтобы исправить это, просто присвойте все эти строки переменной (как показал Джефф) и отправьте это в представление:

$data['form'] = $row->firstname . " " . $row->lastname;
$data['form'] .= "<form method='GET' action='processing/lib/process-send-friend-request.php?'>";

$this->load->view('formview',$data);

Там вы просто выводите форму $и все ваши строки будут выводиться правильно.

РЕДАКТИРОВАТЬ: все выше, если вы находитесь внутри контроллера.Если вы находитесь в модели, просто назначьте все переменной и верните ее контроллеру:

function regularDashboard()
{
  $form = $row->firstname . " " . $row->lastname;
  $form .= "<form method='GET' action='processing/lib/process-send-friend-request.php?'>";
  return $form;
}

В контроллере:

$data['form'] = $this->model->regularDashboard();
$this->load->view('formview',$data);

Если вы позволите мне, я 'Я предлагаю написать форму непосредственно в представление , без хлопот (и структурной ошибки) создания чего-то, что должно быть "представлением" вне сторон.

1 голос
/ 15 февраля 2012

Кажется, что ваша проблема заключается в использовании echo из regularDashboard().Попробуйте установить переменную, содержащую разметку form, и вместо нее введите echo.

. Вот пример:

function regularDashboard()
{
    $html  = "";
    $html .= "<form>";

    //Append the rest of the form markup here

    return $html;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...