2014-04-06 81 views
0

在提交表單並重定向後顯示成功消息的最佳方式是什麼?重定向後顯示消息

我正在開發一個帶有smarty模板引擎的腳本,我不想使用javascript,因爲我希望它儘可能容易讓用戶設計他或她自己的模板,並且我嘗試過使用會話顯示似乎例如

表單

<form action="" id="comment_form" method="POST"> 
    <input type="hidden" name="movie_id" id="page_id" value="{$mov.mid}" /> 
    <input type="hidden" name="user_id" id="user_id" value="{$logged_id}" /> 
    <input class="span2" name="comment" type="text" /> 
    <button class="btn" name="add_comment" type="submit">Add Comment</button> 
</form> 

PHP重定向後取消設置消息

if (isset($_POST['add_comment'])) { 
    if (!empty($_POST['comment'])) { 
     $user_id = $logged_id; 
     $post_comment = mysqli_real_escape_string($con, $_POST['comment']); 
     $movie->AddMovieComments($con, $movie_id, $user_id, $post_comment); 
     $_SESSION['insert'] = 'success'; 
     header ('Location: '.$_SERVER['REQUEST_URI']); 
    } else { 
     $_SESSION['insert'] = 'empty'; 
    } 
} 

現在試圖以顯示成功TPL

{if isset($smarty.session.insert)} 
    <div class="alert alert-success"> 
     <button type="button" class="close" data-dismiss="alert">&times;</button> 
     <h4>Success</h4> 
     Your Comment was successfully added 
    </div> 
{/if} 
{php}unset($_SESSION['insert']);{/php} 

因此,誰能幫助我,告訴我做這個或告訴我,爲什麼在顯示之前是沒有設置的最佳方式。

回答

0

嘗試

if(isset($_SESSION['insert']) && $_SESSION['insert'] == 'success') 
{ 
//Your alert 
unset($_SESSION['insert']); 
} 
0

我不認爲一個會話變量是做到這一點的最好辦法。

在我們的模板中,有一個簡單的條件檢查,看是否有Smarty的變量存在:

{if $success}Your comment was added{/if} 

然後,在你的PHP處理該交易,簡單的啓動變量,將其設置爲true或false取決於對結果,並在指定的Smarty它顯示你的模板之前

$success = false; 
if (!empty($_POST['comment'])) { 
    $success = true; 
} 
$smarty->assign("success",$success); 
$smarty->display("template.tpl"); 

當然,應該確認插入成功,你做$成功=真之前,但你的漂移。

相關問題