2013-06-28 2 views
0

Ниже мой код шаблона:неопределенная подпрограмма и главная :: ThrowTemplateError

<html> 
<head> 
<style> 

.table 
{ 
    display:table; 
    border-collapse:separate; 
    border-spacing:2px; 
} 
.thead 
{ 
    display:table-header-group; 
    color:white; 
    font-weight:bold; 
    background-color:grey; 
} 
.tbody 
{ 
    display:table-row-group; 
} 

.tr 
{ 
    display:table-row; 
} 
.td 
{ 
    display:table-cell; 
    border:1px solid black; 
    padding:1px; 
} 
.tr.editing .td INPUT 
width:100px; 
} 
</style> 
<script type = "text/javascript" src = "jquery.min.js"></script> 
<script> 
var counter = 0; 
var txt1 = "group_save"; 
function addNew() { 
// Get the main Div in which all the other divs will be added 
var mainContainer = document.getElementById('mainContainer'); 
// Create a new div for holding text and button input elements 
var newDiv = document.createElement('div'); 
// Create a new text input 
var newText = document.createElement('input'); 
newText.type = "input"; 
newText.name = txt1+counter; 
//newText.value = counter; 
// Create a new button input 
var newDelButton = document.createElement('input'); 
newDelButton.type = "button"; 
newDelButton.value = "Delete"; 
// Append new text input to the newDiv 
newDiv.appendChild(newText); 
// Append new button input to the newDiv 
newDiv.appendChild(newDelButton); 
// Append newDiv input to the mainContainer div 
mainContainer.appendChild(newDiv); 
counter++; 
// Add a handler to button for deleting the newDiv from the mainContainer 
newDelButton.onclick = function() { 
mainContainer.removeChild(newDiv); 
} 
} 
    function edit(element){ 
    var tr = jQuery(element).parent().parent(); 
    if(!tr.hasClass("editing")) { 
      tr.addClass("editing"); 
      tr.find("DIV.td").each(function(){ 
        if(!jQuery(this).hasClass("action")){ 
          var value = jQuery(this).text(); 

          jQuery(this).text(""); 
          jQuery(this).append('<input type="text" value="'+value+'" />'); 

        } else { 
          jQuery(this).find("BUTTON").text("save"); 
        } 
      }); 
    } else { 
      tr.removeClass("editing"); 
      tr.find("DIV.td").each(function(){ 
        if(!jQuery(this).hasClass("action")){ 
          var value1 = jQuery(this).find("INPUT").val(); 
          alert(value1); 
          jQuery(this).text(value1); 
          jQuery(this).find("INPUT").remove(); 
        } else { 
          jQuery(this).find("BUTTON").text("edit"); 
        } 
      }); 
    } 
} 
</script> 

</head> 
<body > 
<form name="group" method="post" action="process.cgi"> 
<div id="mainContainer"> 
<div><input type="button" value="Add" onClick="addNew()"></div> 
</div> 
<div><input type = "submit" value = "Save"></div> 
</form> 
[% IF count > 0%] 

<b>Details of Groups</b><br> 

<div class= "table"> 
<div class = "thead"> 
    <div class = "tr"> 

<div class = "td">ID</div> 
<div class = "td">GROUP NAME</div> 
<div class = "td">GROUP DESCRIPTION</div> 
<div class = "td">IS ACTIVE</div> 
<div class = "td"></div> 
</div> 
</div> 

<div class= "tbody"> 

[%- SET i = 0; 
WHILE i < id.size; -%] 

<form class = "tr"> 
<div class = "td">&nbsp; [% id.$i %]<br/></div> 
<div class = "td">&nbsp; [% group_name.$i %]<br/></div> 
<div class = "td">&nbsp; [% group_desc.$i %]<br/></div> 
<div class = "td">[% actv.$i %]<br/></div> 
<div class = "td action" ><button type="button" onclick="edit(this);">edit</button> </div> 
<form> 
[%-  SET i = i + 1; 
END -%] 
</div> 
</body> 
</html> 

в то время как я веду свой CGI-код, я получил следующий шаблон error.i проверил мой код и не нашел, что очевидно, что дает ошибка. Может кто-нибудь, пожалуйста, помогите мне отследить эту ошибку. Так что я могу пойти с остальными модификациями в файле. Это я хочу сохранить измененный контент в базе данных. ???

обновление:

Ошибка --- Неопределенных подпрограммы & главной :: ThrowTemplateError вызываются в /var/www/html/centralbugzilla/groups.cgi линии 24.

линии нет 24 нет: $ template-> process ("list/group.html.tmpl", $ vars) || ThrowTemplateError ($ template-> ошибка());

+0

какая ошибка? Пожалуйста, опубликуйте его: D –

+0

Я отправил ошибку –

+0

На самом деле у вас нет подпрограммы, которая называется 'ThrowTemplateError'. Попробуйте с помощью '$ template-> ThrowTemplateError' –

ответ

1

Во-первых, вы не должны предполагать, что люди просто узнают, какую систему шаблонов вы используете. Мне кажется, что вы используете Template Toolkit, но для Perl существует много шаблонных движков.

Во-вторых, шаблон является полной красной селедкой здесь. Проблема в вашем коде Perl. Когда шаблон не может быть успешно обработан, ваш код вызывает функцию с именем ThrowTemplateError, но Perl не может найти эту функцию в любом месте. Где эта функция определена?

(Хорошо, похоже, проблема в вашем шаблоне, а не в коде. В вашем шаблоне есть некоторая ошибка, что означает, что TT не может обработать его, и поэтому вызывается недостающая функция. ошибка в вашем шаблоне будет означать, что недостающая функция больше не будет вызвана, но она все еще отсутствует. И это будет проблемой снова в следующий раз, когда вы случайно сломаете свой шаблон. Поэтому лучше всего исправить это сейчас, я думаю.)

+1

Я иду ошибка, я не закончил мой if loop –

+0

Jenifer_justin: И вы исправили свою ошибку в отношении 'ThrowTemplateError'? – innaM

+0

@Jenifer_justin: Именно поэтому я добавил свой заключительный (в скобках) абзац. Вы увидите ошибку только в своем коде Perl, если в вашем шаблоне также есть ошибки. Но даже если вы исправили шаблон, проблемы в вашем коде Perl все еще существуют. Подпрограмма 'ThrowTemplateError' по-прежнему отсутствует. Вы действительно должны потратить время, чтобы это исправить. –