Подтвердить что ты не робот

CakePHP 2.0 с Twitter Загрузочный

Есть ли способ настроить CakePHP, чтобы он хорошо работал с Twitter Bootstrap? Я понимаю, что этот вопрос уже задан здесь, но ответ не был действительно полным.

Есть также довольно много учебников, но они все либо устарели, либо просто не работают, например: Создайте приложение PHP с помощью CakePHP и ( twitter) Bootstrap, часть 1.

Спасибо!

4b9b3361

Ответ 1

Предполагая, что файл css включен в ваш макет в вашем представлении для форм, вы можете использовать следующее:

<?php echo $this->Form->create('User', array(
'inputDefaults' => array(
    'div' => 'control-group',
    'label' => array('class' => 'control-label'),
    'between' => '<div class="controls">',
    'after' => '</div>',
    'class' => 'span3',
    'error' => array('attributes' => array('wrap' => 'div', 'class' => 'alert alert-error'))
) ));

echo $this->Form->input('password',array(
                'after' => '<span class = \'help-inline\'>Minimum of 5 characters.</span></div>'));
            ?>

Я нашел, что этот метод отлично работает с cake2.0 и bootstrap 2.0

Это приведет к следующим

<div class="control-group required error">
<label for="UserPassword">Password</label>
<div class="controls">
<input name="data[User][password]" class="span3 form-error" type="password" value="" id="UserPassword">
<span class="help-inline">Minimum of 5 characters.</span></div>
<div class="alert alert-error">You must provide a password.</div>
</div>

Вышеуказанный html после того, как форма была отправлена, и была возвращена ошибка.

Ответ 2

IMHO, лучший плагин Twitter Bootstrap (+ рекомендованный одним из разработчиков Cake в трекере ошибок):

https://github.com/slywalker/TwitterBootstrap

Какое удобство в этом заключается в том, что он использует Cake 2 aliasing для помощников, поэтому вам не нужно менять какой-либо код вашего вида.

Таким образом, регулярные $this->Html-> и $this->Form-> во всех ваших старых кодах выводят разметку Bootstrap. Высокий.

Ответ 5

Позволяет сделать это простым и обновить это. Самый быстрый и простой способ сделать это следующий и текущий по v: 2.9

Загрузите 3 папки для загрузки:   http://twitter.github.io/bootstrap/getting-started.html

Затем распакуйте их и переместите:

css/bootstrap.css
css/bootstrap.min.css
css/bootstrap-responsive.css
css/bootstrap-responsive.min.css

      -TO-

app/webroot/css/  

      -THEN MOVE-

js/bootstrap.js
js/bootstrap.min.js

      -TO-

app/webroot/js/

      -THEN MOVE-

img/glyphicons-halflings-white.png
img/glyphicons-halflings.png

      -TO-

app/webroot/img/

*** ОЧЕНЬ ВАЖНО, ЧТО ВЫ НЕ СДЕЛАЛИ ЭТИ ФАЙЛЫ В КОРНЕ ВАШЕГО САЙТА (я объясню позже...)!!!

Затем в редакторе кода по вашему выбору (я предпочитаю Netbeans) откройте файл:

app/View/Layouts/default.ctp

Он должен выглядеть так:

    <?php
/**
 *
 * PHP 5
 *
 * CakePHP(tm) : Rapid Development Framework (http://cakephp.org)
 * Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
 *
 * Licensed under The MIT License
 * For full copyright and license information, please see the LICENSE.txt
 * Redistributions of files must retain the above copyright notice.
 *
 * @copyright     Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
 * @link          http://cakephp.org CakePHP(tm) Project
 * @package       app.View.Layouts
 * @since         CakePHP(tm) v 0.10.0.1076
 * @license       MIT License (http://www.opensource.org/licenses/mit-license.php)
 */

$cakeDescription = __d('cake_dev', 'CakePHP: the rapid development php framework');
?>
<!DOCTYPE html>
<html>
<head>
<?php echo $this->Html->charset(); ?>
<title>
    <?php echo $cakeDescription ?>:
    <?php echo $title_for_layout; ?>
</title>
<?php
    echo $this->Html->meta('icon');

    echo $this->Html->css('cake.generic');


    echo $this->fetch('meta');
    echo $this->fetch('css');
    echo $this->fetch('script');

?>
</head>
<body>
<div id="container">
    <div id="header">
        <h1><?php echo $this->Html->link($cakeDescription, 'http://cakephp.org'); ?></h1>
    </div>
    <div id="content">

        <?php echo $this->Session->flash(); ?>

        <?php echo $this->fetch('content'); ?>
    </div>
    <div id="footer">
        <?php echo $this->Html->link(
                $this->Html->image('cake.power.gif', array('alt' =>     $cakeDescription, 'border' => '0')),
                'http://www.cakephp.org/',
                array('target' => '_blank', 'escape' => false)
            );
        ?>
    </div>
</div>
<?php echo $this->element('sql_dump'); ?>
</body>
</html>

Найдите это:

echo $this->Html->css('cake.generic');

Ниже он добавляет следующее:

echo $this->Html->css('cake.generic');

echo $this->Html->css('bootstrap');

echo $this->Html->css('bootstrap.min');

echo $this->Html->css('bootstrap-responsive');

echo $this->Html->css('bootstrap-responsive.min');

Найдите это:

echo $this->fetch('script');

Ниже он добавляет следующее:

echo $this->Html->script('bootstrap');

echo $this->Html->script('bootstrap.min');

*** Помнишь раньше, когда я сказал, что собираюсь объяснить, почему файлы ДОЛЖНЫ быть в каталоге webroot (для кого-то нового для MVC)? Вышеприведенный код - то, как Cake включает его скрипты и css. Метод, который он использует для этого, выглядит в app/webroot/js для файлов javascript; и соответственно в app/webroot/css для файлов css. Это заставляет синхронизировать jS и css файлы. Если вы хотите, чтобы js/css файлы включали GLOBALLY, включите их default.ctp.

* Если вам нужен только script для использования с одним представлением/страницей, используйте этот же код в файле вида, в котором он вам нужен.

Это может показаться немного сложным, но это займет всего 3 минуты, чтобы включить загрузку twitter во всем мире таким образом.

Надеюсь, это поможет!

Ответ 6

Bootstrap не использует серверный код.

За исключением LESS CSS, который вы можете либо скомпилировать до обычного CSS на сервере, либо как LESS CSS сайт показывает, что вы можете скомпилировать его с помощью less.js следующим образом:

<link rel="stylesheet/less" type="text/css" href="LESS_FILE_HERE.less">
<script src="less.js" type="text/javascript"></script>

Просто соедините все бездействующие файлы с помощью stylesheet/less и less.js, и он должен работать.

Кроме того, Bootstrap - это просто HTML и Javascript. просто поместите все javascript в папку webroot/js и создайте макет для основного HTML и начните.

Ответ 7

Я сделал это. Вам нужно будет сделать следующее:

  • создать макет App/Views/Layouts/default.ctp
  • скопируйте bootstrap html в
  • обновить макет с помощью специального кода торта

Он работает как шарм

Ответ 8

Посмотрите на плагин CakePHP AssetCompress, который обрабатывает LESS-компиляцию для вас, если на вашем сервере установлены NodeJS и LESS.

Затем вам просто нужно включить файлы CSS в свой макет и создать формы с использованием классов Bootstrap.

Ответ 9

Возможно, вам понравился этот плагин: https://github.com/BradCrumb/lesscompiler.

Это компонент CakePHP, который автоматически компилирует меньше файлов в файлы css. Я просто протестировал его с помощью Bootstrap, и он обнаруживает

Ответ 10

Я согласен с @Costa, плагин Slywalker - лучшее решение. Здесь новая версия его плагина, работающая с ветками Twitter Bootstrap 2.x и 3.x.

Этот плагин намного лучше, так как он отлично дополняет Html Helper, Помощник формы и предупреждения.

Fork BoostCake Plugin для CakePHP 2.x в Github

Ответ 11

У меня была такая же проблема, используя slywalker/cakephp-plugin-boost_cake. Я открыл билет, и он уложил его через несколько часов. Он обновился до 1,03 и сказал мне использовать его следующим образом:

<?php echo $this->Form->input('email', array( 'label' => array( 'text' => __('Email:'), ), 'beforeInput' => '<div class="input-append">', 'afterInput' => '<span class="add-on"><i class="icon-envelope"></i></span></div>' )); ?>

Я надеюсь, что это тоже поможет кому-то другому.