Как ссылаться на классы CSS через headLink в Zend_View?

Я добавил несколько файлов CSS и JS в свой каталог /public в каталогах /css и /js соответственно. В моем файле Bootstrap.php я использую следующий инициализатор:

protected function _initPlaceholders() {
    $view = new Zend_View($this->getOptions());
    $view->headLink()->appendStylesheet('/css/themes/gray/style.css');
    $view->headScript()->prependFile('/js/global.js');
    return $view;
}

На мой взгляд, я ссылаюсь на CSS и скрипты следующим образом:

<?php

echo "Employee Pay Stub Summary";
echo $this->headLink();
echo $this->headScript();
?>

Оболочка DIV, на мой взгляд, такова:

<div id="wrapper">

<?php if(count($this->PayStub)): ?>
<table>
    <tr>
    <th>Employee ID</th>
    <th>PayStub ID</th>
    <th>Earning Type</th>
    <th>Total Hours</th>
    <th>Hourly Rate</th>
    <th>Total Earnings</th>
    <th>Total Witholding</th>
    <th>Start Date</th>
    <th>End Date</th>
    </tr>


    <?php foreach ($this->PayStub as $key => $values):?>
        <tr>
        <td><?php echo $values['EmployeeID'];?></td>
        <td><?php echo $values['PayStubID']; ?></td>
        <td><?php echo $values['EarningType']; ?></td>
        <td><?php echo $values['TotalHours']; ?></td>
        <td><?php echo $values['HourlyRate']; ?></td>
        <td><?php echo $values['TotalEarnings'];?></td>
        <td><?php echo $values['TotalWitholding']; ?></td>
        <td><?php echo $values['StartDate']; ?></td>
        <td><?php echo $values['EndDate']; ?></td>
        </tr>
    <?php endforeach;?>

</table>

<a href="/index">Logout</a>
<?php else: ?>
    <p>There are no Paystubs available</p>
<?php endif; ?>
</div>

Часть моей темы CSS выглядит следующим образом:

#wrapper > header {
background-color: #ABCEEE;
background-image: url(../../svg1910.svg?from=%23ABCEEE&amp;to=%238AA8CA);
background-image: -o-linear-gradient(top, #ABCEEE, #8AA8CA);
background-image: -ms-linear-gradient(top, #ABCEEE, #8AA8CA);
background-image: -moz-linear-gradient(top, #ABCEEE, #8AA8CA);
background-image: -webkit-gradient(linear, left top, left bottom, from(#ABCEEE), to(#8AA8CA));
background-image: -webkit-linear-gradient(top, #ABCEEE, #8AA8CA);
background-image: linear-gradient(top, #ABCEEE, #8AA8CA);
-pie-background: linear-gradient(top, #ABCEEE, #8AA8CA);
}

#main-navigation > li.active {
background-color: #abceee;
background-image: -o-linear-gradient(#ABC, rgba(234, 238, 243, 0.2) 10%, #ABCEEE), -o-
linear-gradient(left, #ABC, #ABCEEE 3%, #ABCEEE 97%, #ABC);
background-image: -ms-linear-gradient(#ABC, rgba(234, 238, 243, 0.2) 10%, #ABCEEE), -ms-
linear-gradient(left, #ABC, #ABCEEE 3%, #ABCEEE 97%, #ABC);
background-image: -moz-linear-gradient(#ABC, rgba(234, 238, 243, 0.2) 10%, #ABCEEE), -moz-    linear-gradient(left, #ABC, #ABCEEE 3%, #ABCEEE 97%, #ABC);
background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ABC), 
color-stop(10%, rgba(234, 238, 243, 0.2)), color-stop(100%, #ABCEEE)), -webkit-gradient(linear, 
left 
center, right center, color-stop(0%, #ABC), color-stop(3%, #ABCEEE), color-stop(97%, #ABCEEE),   
color-stop(100%, #ABC));
background-image: -webkit-linear-gradient(#ABC, rgba(234, 238, 243, 0.2) 10%, #ABCEEE), -
webkit-linear-gradient(left, #ABC, #ABCEEE 3%, #ABCEEE 97%, #ABC);
background-image: linear-gradient(#ABC, rgba(234, 238, 243, 0.2) 10%, #ABCEEE), linear-
gradient(left, #ABC, #ABCEEE 3%, #ABCEEE 97%, #ABC);
}

/**
* Contents
*/
#wrapper > section > section > header h1,
#wrapper > section > section > .viewport > header h1{
color: #567;
line-height: 30px;
margin: 0;
text-shadow: #FFF 0 1px 2px;
}

Вот вывод View Source из FireFox:

Employee Pay Stub Summary
<div id="wrapper">

<table>
    <tr>
    <th>Employee ID</th>
    <th>PayStub ID</th>
    <th>Earning Type</th>
    <th>Total Hours</th>

    <th>Hourly Rate</th>
    <th>Total Earnings</th>
    <th>Total Witholding</th>
    <th>Start Date</th>
    <th>End Date</th>
    </tr>



                <tr>
        <td>1</td>
        <td>1</td>
        <td>0</td>
        <td>40</td>
        <td>25</td>

        <td>1000</td>
        <td>100</td>
        <td>07/01/2011</td>
        <td>07/14/2011</td>
        </tr>
                <tr>
        <td>1</td>

        <td>5</td>
        <td>1</td>
        <td>80</td>
        <td>40</td>
        <td>3200</td>
        <td>320</td>

        <td>07/15/2011</td>
        <td>07/31/2011</td>
        </tr>

</table>

<a href="/index">Logout</a>
</div>

Поскольку я новичок в ZF, я не уверен, как мне ссылаться на класс заголовка и оболочки в моем представлении? Точно так же, как мне вызвать функцию JS из одного из файлов в этом каталоге? Как убедиться, что приведенный выше фрагмент CSS #wrapper правильно ссылается на DIV в моем представлении?

Спасибо!!


person SidC    schedule 16.09.2011    source источник
comment
Что вы подразумеваете под ссылкой на класс заголовка и оболочки в вашем представлении? Чтобы вызвать функцию js из одного из этих файлов, просто поместите теги script в любом месте вашего представления и вызовите функцию, как обычно. Обычно вам нужно использовать в макете эхо headLink и headScript, так как эти вещи обычно помещаются в тег ‹head›.   -  person drew010    schedule 17.09.2011
comment
В html я бы использовал что-то вроде ‹div class=wrapper›....‹/div› Могу ли я размещать DIV и ссылаться на классы CSS внутри своего представления, или есть особый способ обработки этого типа ссылки CSS?   -  person SidC    schedule 17.09.2011


Ответы (1)


Вы можете ссылаться на классы CSS в своем представлении так же, как на обычной HTML-странице, то же самое с javascript.

Использование хелперов headScript() и headLink() просто помогает добавлять или добавлять файлы, которые вы хотите включить.

Например, в моем сценарии макета я добавляю несколько файлов css и javascript, которые используются ВЕЗДЕ на моем сайте, а в теге моего макета я повторяю headLink() и headScript(), но это дает мне возможность добавить дополнительные файлы css и javascript из отдельных представлений, для которых может потребоваться дополнительный код. Добавляя дополнительные файлы из моего представления, когда мой макет повторяет headScript и headLink, я получаю дополнительные файлы, добавленные из моих представлений.

Они просто помощники, но они не меняют того, как вы вызываете обычный код javascript или ссылаетесь на CSS.

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

Вот фрагмент из моего сценария макета:

<?php echo $this->doctype() ?>
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en-US">
<head profile="http://gmpg.org/xfn/11">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
<?php echo $this->headTitle() ?>

<?php 
$this->headLink()
     ->prependStylesheet($this->baseUrl('css/master.css'))
     ->prependStylesheet($this->baseUrl('css/application.css'));

echo $this->headLink();
?>

<?php
$this->headScript()
     ->prependFile($this->baseUrl('js/prototype.js'), 'text/javascript');
echo $this->headScript();
?>
</head>

Затем из другого сценария просмотра, которому нужен специальный файл javascript и css, я добавляю

<?php
$this->headScript->appendFile($this->baseUrl('js/prototip.js'), 'text/javascript');
$this->headLink->appendStylesheet($this->baseUrl('css/prototip.js'));
?>

Теперь в моем макете есть эти дополнительные файлы. Как только макет и представления отображаются, я получаю

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en-US">
<head profile="http://gmpg.org/xfn/11">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
<title>Site Title</title>
<link href="/css/application.css" media="screen" rel="stylesheet" type="text/css" />
<link href="/css/master.css" media="screen" rel="stylesheet" type="text/css" />
<link href="/css/prototip.css" media="screen" rel="stylesheet" type="text/css" />

<script type="text/javascript" src="/js/prototype.js"></script>
<script type="text/javascript" src="/js/prototip.js"></script>
</head>

Они совсем не меняют работу html и javascript в вашем браузере.

person drew010    schedule 16.09.2011
comment
Я обновил свой вопрос. Фрагмент CSS-оболочки не отображается в моем DIV. Вы упомянули об использовании макетов, они лучше/хуже, чем использование представлений? - person SidC; 17.09.2011
comment
Макет — это просто сценарий просмотра, но он является оболочкой всего вашего контента. Я бы рекомендовал использовать макет наверняка. Можете ли вы показать мне, каков полный вывод вашей страницы, когда вы открываете ее в браузере и публикуете на pastebin? Я думаю, что проблема заключается именно в структуре итогового документа. - person drew010; 17.09.2011