Форум программистов, компьютерный форум, киберфорум
PHP: ООП
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.68/22: Рейтинг темы: голосов - 22, средняя оценка - 4.68
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276

PHP MVC. Как подключать основной вид?

01.01.2014, 16:04. Показов 5035. Ответов 52
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Помогите, пожалуйста с разрешением такого вопроса... В общем так:
- Много информации прочитал о MVC PHP, понял как всё действует при написании приложения в этом стиле.
- Пробовал писать воё приложение - всё правильно получается.
Но, возник вопрос, ответа на который я не смог найти нигде . Как же подключать основной вид при написании приложения в стиле MVC? То есть тот вид, который содержит HTML код, который на всех страницах одинаковый (верх, низ страницы).
Спасибо.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.01.2014, 16:04
Ответы с готовыми решениями:

Mod_rewrite, Как изменить вид ссылки типа index.php?cat=php
ссылка получается вот такая: mysite.loc/index.php?cat=PHP&article=obrabotka_formy как это переделать на: ...

Что представляет из себя база данных на хостинге и как ее подключать к php-файлам
Я недавно выложил свой сайт в интернет. Ранее заходил на него с помощью денвера и там база данных располагалась в...

Mvc изменить вид ссылок
Привет, в основе сайта MVC PHP. Ссылки получаются такого вида: local.somesite.ru/like/add/?like_id=1&obj_id=8&type=post. Вопрос:...

52
508 / 358 / 13
Регистрация: 12.03.2012
Сообщений: 1,896
02.01.2014, 20:47
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от lyod Посмотреть сообщение
OnYourLips, учи основы, php сам по себе шаблонизатор, и использовать чьи-либо (кхм...) разработки не имеет смысла, это как одевать шапку на шапку.
Упрлс?

PHP сам по себе шаблонизатор, но очень плохой. Зачем использовать плохой шаблонизвтор при наличии нормальных?
В этой теме уже назвали как минимум две необходимые возможности шаблонизатора, которые на PHP без ужасных костылей не сделать: наследование и автоэкранирование.

Цитата Сообщение от DrobyshevAlex Посмотреть сообщение
10 лет назад я тоже так говорил...
+1. Потом я поумнел и перестал нести подобную чушь.
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
02.01.2014, 21:40  [ТС]
Мог бы нормально сказать всё это, без оскорблений, как, например, DrobyshevAlex
0
02.01.2014, 21:42
 Комментарий модератора 
Заканчиваем полемику.
1
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
02.01.2014, 21:44  [ТС]
KOPOJI, а вы что скажете, стоит ли использовать шаблонизаторы исключительно всегда (в более-менее больших проектах)? Действительно интересно.
0
 Аватар для Василий Макогон
270 / 226 / 11
Регистрация: 20.04.2012
Сообщений: 817
03.01.2014, 03:22
Цитата Сообщение от OnYourLips Посмотреть сообщение
наследование и автоэкранирование.
если насчет второго можно поспорить (а нужно ли автоэкранирование - мое мнение - нет), то наследование в шаблонах - это вообще идея мне не понятная и как кажется - вредная. что там наследовать то?
1
508 / 358 / 13
Регистрация: 12.03.2012
Сообщений: 1,896
03.01.2014, 03:41
Василий Макогон, наследовать мастершаблон (лейаут) с переопределением блоков.
Автоэкранирование же предупреждает XSS.
0
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
03.01.2014, 05:09
Описываем блок для поля text, select, ...
потом юзаем бандл с симффони для форм, пишем в twig
HTML5
1
2
{{ form_start(form) }}
{{ form_end(form) }}
В результате получаем

HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<form name="form_login" method="post" action="" class="form">
 
        <div class="form-group">
            <label for="form_login_username" class="required">Логин</label><br/>
                
            <input type="text" id="form_login_username" name="form_login[username]" required="required" maxlength="25" class="form-control" />
        </div>
 
        <div class="form-group">
            <label for="form_login_email" class="required">E-Mail</label><br/>
                
            <input type="email" id="form_login_email" name="form_login[email]" required="required" maxlength="60" class="form-control" />
        </div>
 
        <div class="form-group">
            <label for="form_login_password" class="required">Пароль</label><br/>
                
            <input type="password" id="form_login_password" name="form_login[password]" required="required" class="form-control" />
        </div>
 
        <div class="form-group">
            <label for="form_login_firstname" class="required">Ваше имя</label><br/>
                
            <input type="text" id="form_login_firstname" name="form_login[firstname]" required="required" maxlength="25" class="form-control" />
        </div>
 
        <div class="form-group">
            <label for="form_login_phone" class="required">Номер телефона (Например: +7 900 xxxxxxx)</label><br/>
            <small>Мы свяжемся с Вами по телефону для подтверждения заказа.</small>
                
            <input type="text" id="form_login_phone" name="form_login[phone]" required="required" maxlength="25" class="form-control" />
        </div>
 
        <div class="form-group">
            <label for="form_login_captcha" class="required">Код с картинки</label>
                
            <div class="captcha">
                <img src="data:image/png;base64,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" width="100" height="30" title="captcha" /><input type="text" id="form_login_captcha" name="form_login[captcha]" required="required" autocomplete="off" class="form-control" />
                <input type="submit" value="Регистрация" class="btn btn-primary" />
            </div>
        </div>
 
    <input type="hidden" id="form_login_token" name="form_login[token]" value="AMyFcMdH0k-OMLVetqA_W43meZ2e8mWT7wrWMOQvROY" /></form>
Нужно изменить шаблон форм, например оформление полей каких либо, меняем в одном месте, и во всех формах оно изменилось, вот прелесть наследования форм

Добавлено через 1 минуту
Нужно вклчюить скрипт в основной шаблон в хедер? без проблем
PHP
1
2
3
{{ block head }}
<script>...
{{ endblock }}
1
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
03.01.2014, 14:14  [ТС]
OnYourLips, ты говоришь, что шаблонизаторы автоэкранируют символы. А на php прописать htmlspecialchars влом что-ли? И использовать шаблонизатор абсолютно везде, как ты сказал - вот это настоящее быдлокодерство. Для сознания сайта в 10 страниц подключать шаблонизатор, весом в n мегабайт - это нонсенс. PHP - очень даже неплохой шаблонизатор, ты думаешь, что его (php) писали программисты, уровнем ниже тех, кто писал тот же twig?
0
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
03.01.2014, 14:37
Цитата Сообщение от lyod Посмотреть сообщение
А на php прописать htmlspecialchars влом что-ли?
Не в лом, а можно забыть в одном месте и всё.
Вы просто обратите внимание, на фиксы безопасности в различных движках, то и дело находят дыры, как раз связанные с забыванием экранирования символов или использования плейсхолдеров.

Простой пример, на этом форуме, буквально пол года назад, была дыра, в заголовке темы можно было использовать html теги.
Было бы автоэкранирование - не было бы такой проблемы.

Цитата Сообщение от lyod Посмотреть сообщение
И использовать шаблонизатор абсолютно везде, как ты сказал - вот это настоящее быдлокодерство.
это Ваше мнение...

Цитата Сообщение от lyod Посмотреть сообщение
Для сознания сайта в 10 страниц подключать шаблонизатор, весом в n мегабайт - это нонсенс.
Вы о чём? У вас бесплатный хостинг, у которого нет 10 метров лишнего места? Речь о нормальных сайтах а не о хомпедж Васи Петичкина.

Цитата Сообщение от lyod Посмотреть сообщение
PHP - очень даже неплохой шаблонизатор
Вы не поверите! чем занимаются шаблонизаторы для пхп.
Они как раз переводят код шаблона в код пхп, и сохраняют в файл, и при последующих запусках, уже запускают именно код на голом пхп.

Цитата Сообщение от lyod Посмотреть сообщение
ты думаешь, что его (php) писали программисты, уровнем ниже тех, кто писал тот же twig?
Встречный вопрос, Вы думаете что Вы программист, уровнем выше чем программисты написавшие RoR, Django, Symfony 2? В которых по дефолту поставляется шаблонизатор и он сразу включен.

Вы пока не привели не одного минуса шаблонизатора, только то, что на вашем хостинге нет лишних нескольких мегабайт места... это не минус шаблонизатора, это минус хостинга.
1
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
03.01.2014, 15:15  [ТС]
Цитата Сообщение от DrobyshevAlex Посмотреть сообщение
У вас бесплатный хостинг, у которого нет 10 метров лишнего места?
Причём тут это? Я НЕ ПРОТИВ ШАБЛОНИЗАТОРОВ, я против того, чтобы называть тех, кто ими не пользуется во всех нужных и не нужных местах, - говнокодерами.
Цитата Сообщение от DrobyshevAlex Посмотреть сообщение
Не в лом, а можно забыть в одном месте и всё.
Можно сделать так и на php, чтобы все данные, идущие в шаблон, автоэкранировались. Это не проблема.
Цитата Сообщение от DrobyshevAlex Посмотреть сообщение
Вы не поверите!
Поверю.
Цитата Сообщение от DrobyshevAlex Посмотреть сообщение
Встречный вопрос, Вы думаете что Вы программист, уровнем выше чем программисты написавшие RoR, Django, Symfony 2?
И опять, причём тут это? Я говорю про то, что использовать вставки php - НЕ ПЛОХО!!! Можно делать с помощью шаблонизатора, а можно и с помощью php.
Цитата Сообщение от DrobyshevAlex Посмотреть сообщение
Вы пока не привели не одного минуса шаблонизатора
И не собираюсь . Повторяюсь:
Я НЕ ПРОТИВ ШАБЛОНИЗАТОРОВ, я против того, чтобы называть тех, кто ими не пользуется во всех нужных и не нужных местах, - говнокодерами.

Добавлено через 5 минут
Цитата Сообщение от DrobyshevAlex Посмотреть сообщение
Синтаксис шаблонизатора практически один на все шаблонизаторы.
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
Django:
 {% if today_is_weekend %}
   <p>Welcome to the weekend!</p>
 {% else %}
   <p>Get back to work.</p>
 {% endif %}
 
 {% for athlete in athlete_list %}
   <li>{{ athlete.name }}</li>
 {% endfor %}
 
 XSLT:
<xsl:choose>
   <xsl:when test="/some/node = 1">
     One
   </xsl:when>
   <xsl:otherwise>
     More.
   </xsl:otherwise>
</xsl:choose>
 
<xsl:for-each select="/nodes/*">
   Name: {./name}
</xsl:for-each>
 
 HTML::Template:
<TMPL_IF BOOL>
   Some text that is included only if BOOL is true
<TMPL_ELSE>
   Some text that is included only if BOOL is false
</TMPL_IF>
 
<TMPL_LOOP NAME=EMPLOYEE_INFO>
   Name: <TMPL_VAR NAME=NAME> <br>
   Job: <TMPL_VAR NAME=JOB> <p>
</TMPL_LOOP>
 
 Smarty
 {if $name eq 'Fred'}
   Welcome Sir.
 {else}
   Welcome, whatever you are.
 {/if}
 
 {foreach key=key item=item from=$contact}
   {$key}: {$item}<br>
   {$key}: {$item}<br />
 {/foreach}
 
 EJS — Embedded Javascript
<% if(question) { %>
   <h2><%= author %>: <%= question %></h2>
<% } else { %>
   <h2>Нет вопросов, на которые можно ответить!</h2>
<% } %>
 
<% for(var i=0; i<supplies.length; i++) {%>
   <li><%= supplies[i] %></li>
<% } %>
Добавлено через 9 минут
И если верстальщик смог выучить это:
Code
1
2
3
4
5
6
7
{% if today_is_weekend %}
...
{if $name eq 'Fred'}
...
<% if(question) { %>
...
<TMPL_LOOP NAME=EMPLOYEE_INFO>
То почему вы думаете, что он не разберётся с
Code
1
2
3
if( $num == 2 ) { # PHP
...
if ( num == 2 ) { # JAVA
?
0
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
03.01.2014, 16:10
Цитата Сообщение от lyod Посмотреть сообщение
Причём тут это?
при том, что не понятно при чём тут это
Цитата Сообщение от lyod Посмотреть сообщение
Для сознания сайта в 10 страниц подключать шаблонизатор, весом в n мегабайт
и что что он 10 мб?
Раз дело не в месте, получается что Вам их вёдрами нести в ДЦ? далеко и тяжело?
Ну объясните, чем плохо использовать шаблонизатор, в сайте на 10 страниц?
В конце концов, я ещё раз повторюсь
Цитата Сообщение от DrobyshevAlex Посмотреть сообщение
Речь о нормальных сайтах а не о хомпедж Васи Петичкина.
но и для хомпейджа не будет плохо использовать шаблонизатор, хотя бы из за автоэкранирования и наследования шаблонов удобного

страничка
PHP
1
2
3
4
5
6
7
<?php
 
include 'core.php';
 
echo $twig->render('blogs.html', array(
    'blogs' => $db->getLastBlogs(10),
));
и шаблон
HTML5
1
2
3
4
5
6
7
{% block title %}Новые записи{% endblock %}
 
{% block content %}
    {% for blog in blogs %}
        {% include "blogs_item.html" %}
    {% endfor %}
{% endblock %}
изменили заголовок и содержимое странички.
мне кажется очень даже удобно и для хом пейджа

Цитата Сообщение от lyod Посмотреть сообщение
Можно сделать так и на php, чтобы все данные, идущие в шаблон, автоэкранировались. Это не проблема.
разница лишь в том, что в шаблонизаторе экранирование в момент вывода происходит.
если экранировать при передаче в шаблон, то в случае, если нужно вывести не экранированные данные, придётся обратно переводить сущности в символы, что лишняя и не нужная нагрузка

xslt как бы не относится в данном случае к шаблонизаторам, которые мы обсуждаем
я считаю что это уже немного другой тип шаблонизаторов, который напрямую в браузерах даже поддерживается.

Цитата Сообщение от lyod Посмотреть сообщение
То почему вы думаете, что он не разберётся с
он не не разберётся, а переделать проще вот такое
HTML5
1
{% for item in items %}
в
HTML5
1
<% for item in items %>
чем

PHP
1
<?php foreach ($items as $item) : ?>
в
HTML5
1
<% for item in items %>
хотя бы тем, что порядок аргументов сохраняется как правильно

но я не говорю что тут 100% польза от шаблонзаторов, просто немного там удобней, чуть чуть там безопасней, а там более переносимо... в результате выходит что польза от шаблонизаторов есть

что же касается называть говнокодерами тех, кто не юзает шаблонизатор... я как бы не называл их так
но, как я писал выше, мне кажется юзание шаблонизатора даже для хомпейджа, очень удобно, и я бы не стал утверждать, что для хомпейджа юзать шаблонизатор - нонсенс.
1
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
03.01.2014, 16:27  [ТС]
Цитата Сообщение от DrobyshevAlex Посмотреть сообщение
что же касается называть говнокодерами тех, кто не юзает шаблонизатор... я как бы не называл их так
Спасибо. Ура, в это теме произнесены слова, которые я добивался услышать .
Цитата Сообщение от DrobyshevAlex Посмотреть сообщение
и я бы не стал утверждать, что для хомпейджа юзать шаблонизатор - нонсенс.
На мой взгляд - это равносильно тому, как если бы кто-то заказывал вертолёт для похода (полёта ) в гости за версту (1067 метров ).

Добавлено через 1 минуту
Тут я возможно (а может наверняка), ошибаюсь, опыта у вас вероятно больше, раз уже больше 10 лет программируете.
0
75 / 75 / 17
Регистрация: 29.11.2013
Сообщений: 262
03.01.2014, 16:47
Цитата Сообщение от lyod Посмотреть сообщение
На мой взгляд - это равносильно тому, как если бы кто-то заказывал вертолёт для похода (полёта ) в гости за версту (1067 метров ).
lyod, очень похоже, что Вы проводите ассоциацию между фреймворком и шаблонизатором, а это очень разные вещи. В первом случае, ради 10 строк текста, действительно происходит слишком много операций, но во-втором получиться такой же php-файл.
ИМХО, там где необходима реализация MVC, там по дефолту должен быть какой-то "мостик" для взаимодействия. Для статистической сайта, где на php только одна форма обратной связи заморачиваться не стоит. Но принципы использования шаблонизатора знать нужно.
Цитата Сообщение от lyod Посмотреть сообщение
То почему вы думаете, что он не разберётся с
Иногда другим программистам код понять трудно На прошлой работе (там правда на perl'е дело было), когда один товарищ в отпуске был — все под стол уходили, когда нужно было в его проектах что-то править.
1
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
03.01.2014, 16:56  [ТС]
Цитата Сообщение от ilikesmile Посмотреть сообщение
очень похоже, что Вы проводите ассоциацию между фреймворком и шаблонизатором
Нет, нет, что вы... )

Не по теме:

Цитата Сообщение от ilikesmile Посмотреть сообщение
все под стол уходили, когда нужно было в его проектах что-то править.
:D

0
 Аватар для Василий Макогон
270 / 226 / 11
Регистрация: 20.04.2012
Сообщений: 817
07.01.2014, 04:35
http://www.phpinfo.su/articles... v_php.html
http://www.phpinfo.su/articles... ast_2.html
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
07.01.2014, 08:28  [ТС]
Василий Макогон, я это читал, довольно давно, причём . И принял, поэтому в этой теме и отстаивал, что php - лучший шаблонизатор. Но меня, как видите, обругали . Теперь я запутался...
0
07.01.2014, 12:26

Не по теме:

Как будто ту статью написал человек, мнение которого самое главное в мире.
Поишите видео на ютубе, как на айфонах гнётся экран, как для чиповки приставки, сверлят процессор дрелью,... и многое другое, а оно для того что бы юзер, поверивший первому что увидел, сломал свой айфон или хбокс :)

я не говорю что эта статьи такие же, но и говорить что вот там написано так, значит надо так делать - как то не правильно...

Не по теме:

Используя "чистую" PHP-шаблонизацию вам не обойтись без специфических для шаблона классов или функций. Описанная выше проблема многословности элементарно решается введением функции или метода в классе-помощнике.


вот только от попытки сократить <?php echo htmlspecialchars($var)?> до <?=$this->e($var)?>, безопасней не стало, может быть короче, но в шаблонизаторе это так {{ var }}, и Вы не кода не забудите экранировать, как я писал выше, даже на этом форуме была такая дыра, где в одном месте забыли экранирование...
так что при чём тут короче?) главное что тут в 3 часа ночи, по запарке, можно забыть про this->e...

а вообще, делайте как хотите, зачем вас в чём то убеждать :) в некоторых странах лягушки деликатес, но не кто меня не убедит их есть :)

0
 Аватар для Василий Макогон
270 / 226 / 11
Регистрация: 20.04.2012
Сообщений: 817
07.01.2014, 13:23
Цитата Сообщение от DrobyshevAlex Посмотреть сообщение
вот только от попытки сократить <?php echo htmlspecialchars($var)?> до <?=$this->e($var)?>, безопасней не стало, может быть короче, но в шаблонизаторе это так {{ var }}, и Вы не кода не забудите экранировать, как я писал выше, даже на этом форуме была такая дыра, где в одном месте забыли экранирование...
так что при чём тут короче?) главное что тут в 3 часа ночи, по запарке, можно забыть про this->e...
я не понимаю, как можно "забыть" прогнать вывод в шаблоне через $this->e().

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

мы на работе юзаем смарти. у нас столько говнокода происходит из-за того, что смарти не позволяет делать многие вещи, которые с легкостью мы могли бы сделать на чистом PHP!

И принял, поэтому в этой теме и отстаивал, что php - лучший шаблонизатор. Но меня, как видите, обругали . Теперь я запутался...
поставь Смарти. Напиши на нем шаблоны. И посмотри в тот код, что он генерирует - будет PHP с HTML кодом. И ответь себе на вопрос сам - нужен ли тебе тот же Смарти.
0
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
07.01.2014, 14:39
Цитата Сообщение от Василий Макогон Посмотреть сообщение
я не понимаю, как можно "забыть" прогнать вывод в шаблоне через $this->e().
сколько делал проектов - ни разу не забывал. со мной что-то не так? или может с вами? )
Во первых, я не сказал что Вы или я забудете. Но у меня есть информация, что на земле более двух человек...

Василий Макогон, twig - это что то типа иде, упрощающий написание кода, и помогающий.

вот взять симфони с неймспейсами огромными, когда я пишу с симфони, я пишу в IDE, что бы набрав Co и нажав энтер я получил Comment() и дополнительно строку в заголовке use Acme\ProjectBundle\Entity\Comment
и мне не приходилось набирать это вручную.
а когда я использую рор, пишу в нотепаде.

Вы сами сказали, что шаблонизатор не делает не чего, кроме как переводит в пхп код, то есть быстродействие не теряется, код выполняется пхпшный. Да и быстродействие сайта зависит от гораздо больших вещей чем от шаблонизатора

Получается, что следуя вашей логики, о том что на пхп можно сделать шаблон без смарти, можно откинуть фреймворки, или без фреймворков нельзя сделать сайт? Ну я пониаю что конкретно Вы, вроде бы писали, что сторонние фв не юзаете, и у Вас есть свой, но зачем? Можно ж в процедурном стиле без готовых функций написать сайт...
А можно и пхп откинуть, или в хекс редакторе нельзя сделать сайт?
А о ООП и интерфейсах вообще не может быть и речи, бесполезная штука...

Я ещё раз повторяю, не нравиться, не используйте, но говорить о том что "я не когда не забуду"...
Я ж ещё раз говорю, в прошлом году была дыра на этом форуме, наверное тоже люди думали что не забыли...
Да и утверждать что Вы не разу не забыли - недоказуемо, дура может и есть, но не кто не знает о ней и не разу не вылезла...

Вообщем это бесполезный разговор... есть люди который только линукс юзают, есть те, которые виндовс, есть те кто есть мясо, а кто то не ест... дело вкуса
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
07.01.2014, 14:57  [ТС]
Да, что шаблонизаторы преобразуют шаблонные закорючки в php-код и потом обрабатывают - я знаю . Знаю, что на это затрачиваются определённые ресурсы сервера. Василий Макогон, не знаю, но мне кажется, что ваши аргументы меня склоняют всё-же в сторону использования чистого php в шаблонах .
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.01.2014, 14:57

Модель MVC, передача данных из контроллера в вид?
как правильно организовать передачу данных из контроллера в вид? как-то у меня в голове не укладывается как это сделать, напр. есть: ...

Куда подключать файл php
Всем привет Подскажите плз куда нужно прописывать файл .php чтобы он отображался при заходе на сайт сразу Запущен пустой локальный сайт...

> Как сделать переход на другую страницу в php MVC ?
index.php &lt;?php require 'application/lib/Dev.php'; use application\core\Router; spl_autoload_register(function($class) { ...

как из Unixtime чрез PHP перевести в нормальный вид
&lt;html&gt; &lt;head&gt; &lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf8&quot;&gt; &lt;title&gt;Страница управления&lt;/title&gt; &lt;link...

Заставить php скрипт подключать файл
Как принудительно заставить index.php подключать function.php


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Море в объективе
kumehtar 06.07.2026
Хотел написать много проникновенных слов, но передумал. Оно само - говорит. Кто слышит тот слышит.
Оказывается, Unreal Engine позволяет качество на порядки выше, чем было в Lineedge
Etyuhibosecyu 05.07.2026
Жаль, конечно, что я не узнал об этом, пока Lineedge существовала, а то бы Noname2331 написал, что волки превращаются в пиксельную кашу, а я бы его попросил скачать какую-нибудь бриллиантовую или Pro. . .
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась. Первый вариант. . .
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2. Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет. Но обычно это 50 лет и более. Наверное, закисление почвы происходит сезонно в средней. . .
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи. Через несколько переработок от PHP кода к C89 (надеюсь, 89). Но довольно запутанно получилось. Код для Linux. Но если убрать time и то, что с ним. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru