Aligning Large Language Models for Controllable Recommendations