经过大量研究,我发现Laravel非常好。我有一个带动画的主页开头,然后菜单和页面内容分成两边。点击链接后,我只想改变内容。我试过jQuery / ajax。但我有一个问题,我希望内容和侧边栏菜单中的链接可以更改内容。你能告诉我这样做的方法吗?
这是我的ajax.js:
$(document).ready( function() {
$("#content ul li a").click( function(e){
e.preventDefault();
$('#page').load(this.href);
return false;
});
});
这是我的文章控制器:
<?php
class Articles_Controller extends Base_Controller
{
public $restful = true;
public $layout = 'layouts.default';
public function get_index(){
$this->layout->title = "Anasayfa";
$this->layout->content = View::make('articles.index')
->with('articles',Article::order_by('id')->get());
}
public function get_view($id){
$this->layout->title = "Hizmetlerimiz";
$this->layout->content = View::make('articles.view')
->with('article',Article::find($id));
}
}
我的default.blade.php
:
<div id="wrapper">
<div id="page">
{{ $content }}
</div>
<div id="sidebar">
<div id="sidebar-content">
<!-- MENU -->
<ul id="menu">
<li class="current"><a href="#">ANASAYFA</a></li>
<li><a href="#">HAKKIMIZDA</a></li>
// ...
我的index.blade.php
:
<div id="content">
@foreach($articles as $article)
<ul class="blog-medium">
<li>
<div class="blog-medium-text">
<h1><a href="./post.html">{{$article-> title }} </a></h1>
<p class="blog-medium-excerpt"><p>Tek kişilik sınıflarda YGS - LYS hazırlık programımızda dersler özel…<br />
{{ HTML::link_to_route('article','devamı', array($article->id)) }}</p>
</div>
</li>
</ul>
@endforeach
</div>
我的view.blade.php
:
<div id="content">
<h1>{{$article->title}}</h1>
<p>{{$article->content}}</p>
</div>
答案 0 :(得分:2)
我认为问题出在你的Jquery
中$(function()
{
$("#content ul li a").click( function()
{
var url = $(this).attr('href'); // Get href value from <a>
$('#page').load(url);
return false; // No need for e.preventDefault() if return false;
});
});
假设href值是控制器方法的完整或相对路径,这应该可以工作。
当您使用restful控制器时,请考虑AJAX能够使用GET和POST HTTP方法。您可以将所有POST和GET数据分离为单独的函数,并使用以下命令检查Laravel中的请求是否为Ajax:
if (Request::ajax())
{
... // The request is AJAX, do ajax stuff
return Response::json(array('action' => 'complete'));
}